diff options
| author | crogers | 2010-05-07 20:06:07 +0000 |
|---|---|---|
| committer | crogers | 2010-05-07 20:06:07 +0000 |
| commit | e91b1489fa98bb207be2f72ff1ebda0aa2a8e3b8 (patch) | |
| tree | a16473245fba469b8c0b203f541d9bbbea677be0 | |
| parent | 598da983ba6149e5d65a06052d61457989bb0803 (diff) | |
| download | webtools.jsf-e91b1489fa98bb207be2f72ff1ebda0aa2a8e3b8.tar.gz webtools.jsf-e91b1489fa98bb207be2f72ff1ebda0aa2a8e3b8.tar.xz webtools.jsf-e91b1489fa98bb207be2f72ff1ebda0aa2a8e3b8.zip | |
[Bug 252861] JUnit testing for tag converter transform operation to support generating markup based on view mode.
3 files changed, 226 insertions, 60 deletions
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/checkmodeop_dti.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/checkmodeop_dti.xml new file mode 100644 index 000000000..606f4242b --- /dev/null +++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/checkmodeop_dti.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore" + xmlns:dti="http://org.eclipse.jsf.pagedesigner/dtinfo.ecore" + id="org.eclipse.jst.pagedesigner.tests.testCheckModeOperation" + type="tagFile"> + + <entity id="testTagOne" type="tag"> + <trait id="dt-info"> + <value xsi:type="dti:DTInfo"> + <tag-convert-info> + <operation id="org.eclipse.jst.pagedesigner.CheckModeOperation"> + <parameter value="design"/> + <operation id="org.eclipse.jst.pagedesigner.CreateElementOperation"> + <parameter value="div"/> + </operation> + <operation id="org.eclipse.jst.pagedesigner.CopyChildrenOperation"/> + </operation> + </tag-convert-info> + <tag-decorate-info id="vpd-decorate-preview" + nonVisual="true" + /> + </value> + </trait> + </entity> + + <entity id="testTagTwo" type="tag"> + <trait id="dt-info"> + <value xsi:type="dti:DTInfo"> + <tag-convert-info> + <operation id="org.eclipse.jst.pagedesigner.CreateElementOperation"> + <parameter value="div"/> + </operation> + <operation id="org.eclipse.jst.pagedesigner.CheckModeOperation"> + <parameter value="design"/> + <operation id="org.eclipse.jst.pagedesigner.CopyAttributeOperation"> + <parameter value="requiredAttr1"/> + </operation> + <operation id="org.eclipse.jst.pagedesigner.RenameAttributeOperation"> + <parameter value="requiredAttr1"/> + <parameter value="id"/> + </operation> + </operation> + <operation id="org.eclipse.jst.pagedesigner.CheckModeOperation"> + <parameter value="preview"/> + <operation id="org.eclipse.jst.pagedesigner.CopyAttributeOperation"> + <parameter value="requiredAttr2"/> + </operation> + <operation id="org.eclipse.jst.pagedesigner.RenameAttributeOperation"> + <parameter value="requiredAttr2"/> + <parameter value="id"/> + </operation> + </operation> + </tag-convert-info> + </value> + </trait> + </entity> + +</md:metadatamodel> diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml index 797631850..adcc045bb 100644 --- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml +++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml @@ -4,6 +4,10 @@ <extension point="org.eclipse.jst.jsf.common.standardMetaDataFiles"> <standardMetaDataFile + location="/metadata/checkmodeop_dti.xml" + uri="org.eclipse.jst.pagedesigner.tests.testCheckModeOperation"> + </standardMetaDataFile> + <standardMetaDataFile location="/metadata/test-metadata.xml" uri="org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1"> </standardMetaDataFile> diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java index 4eaa11325..76850be84 100644 --- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java +++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java @@ -180,6 +180,122 @@ public class Test_TransformOperations extends TestCase { } /** + * Test "CheckModeOperation". + */ + public void testCheckModeOperation() { + try { + webProjectTestEnv.loadResourceInWebRoot( + PageDesignerTestsPlugin.getDefault().getBundle() + , "/testdata/checkmodeop/checkModeOp.tld.data" + , "/META-INF/checkModeOp.tld"); + + webProjectTestEnv.loadResourceInWebRoot( + PageDesignerTestsPlugin.getDefault().getBundle() + ,"/testdata/checkmodeop/testCheckModeOperation.jsp.data" + ,"/testCheckModeOperation.jsp"); + + ContextWrapper wrapper = null; + + // First converter is simple use of CheckModeOperation + // containing child operations. + // Exercises both design and preview mode, but there should + // only be conversion for design view, based on the design + // time info trait in the meta-data for the tag in this test. + try { + wrapper = + getDocumentContext("/WebContent/testCheckModeOperation.jsp", 365); + + String prefix = "cmo"; + String localName = "testTagOne"; + ITagConverter tagConverter = + getTagConverter(wrapper, prefix, localName, IConverterFactory.MODE_DESIGNER); + assertNotNull(tagConverter); + + // invoke ITagConverter instance + tagConverter.convertRefresh(null); + + // get and test result element + Element resultElement = tagConverter.getResultElement(); + assertNotNull(resultElement); + assertEquals("div", resultElement.getLocalName()); + + // Ensure correct child element was copied to child node list. + // First child is text node, look at second child. + List<?> childNodes = tagConverter.getChildModeList(); + assertTrue(childNodes.size() > 1); + Node secondChildNode = (Node)childNodes.get(1); + assertTrue(secondChildNode instanceof Element); + Element secondChildElement = (Element)secondChildNode; + assertEquals("span", secondChildElement.getLocalName()); + assertEquals("t1ChildSpan", secondChildElement.getAttribute("id")); + + // now try in preview mode + tagConverter = + getTagConverter(wrapper, prefix, localName, IConverterFactory.MODE_PREVIEW); + assertNotNull(tagConverter); + + // invoke ITagConverter instance + tagConverter.convertRefresh(null); + + // get and test result element + resultElement = tagConverter.getResultElement(); + assertNull(resultElement); + } finally { + if (wrapper != null) { + wrapper.dispose(); + } + } + + // Second tag converter has the CheckModeOperation + // as a sibling operation for additional transforms. + // Exercises both design and preview mode. + try { + wrapper = + getDocumentContext("/WebContent/testCheckModeOperation.jsp", 531); + + String prefix = "cmo"; + String localName = "testTagTwo"; + + // test conversion for design mode + ITagConverter tagConverter = + getTagConverter(wrapper, prefix, localName, IConverterFactory.MODE_DESIGNER); + assertNotNull(tagConverter); + + // invoke ITagConverter instance + tagConverter.convertRefresh(null); + + // get and test result element + Element resultElement = tagConverter.getResultElement(); + assertNotNull(resultElement); + assertEquals("div", resultElement.getLocalName()); + assertEquals("designId", resultElement.getAttribute("id")); + + // now try in preview mode + tagConverter = + getTagConverter(wrapper, prefix, localName, IConverterFactory.MODE_PREVIEW); + assertNotNull(tagConverter); + + // invoke ITagConverter instance + tagConverter.convertRefresh(null); + + // get and test result element + resultElement = tagConverter.getResultElement(); + assertNotNull(resultElement); + assertEquals("div", resultElement.getLocalName()); + assertEquals("previewId", resultElement.getAttribute("id")); + } finally { + if (wrapper != null) { + wrapper.dispose(); + } + } + } catch(Exception ex) { + ex.printStackTrace(); + fail(ex.getLocalizedMessage()); + } + } + + + /** * Test "ConvertAttributeToTextOperation". */ public void testConvertAttributeToTextOperation() { @@ -256,29 +372,8 @@ public class Test_TransformOperations extends TestCase { ContextWrapper wrapper = null; try { wrapper = getDocumentContext("/WebContent/Test_TransformOperations.jsp", 620); - IStructuredDocumentContext context = wrapper.getContext(); - IDOMContextResolver resolver = - IStructuredDocumentContextResolverFactory.INSTANCE. - getDOMContextResolver(context); - - //get Element - Node node = resolver.getNode(); - assertTrue(node instanceof Element); - assertEquals("h", node.getPrefix()); - assertEquals("commandLink", node.getLocalName()); - Element element = (Element)node; - - //get IDOMDocument - IStructuredModel model = wrapper.getModel(); - assertTrue(model instanceof IDOMModel); - IDOMDocument document = ((IDOMModel)model).getDocument(); - assertNotNull(document); - - //get ITagConverter instance - ITagConverter tagConverter = DTManager.getInstance().getTagConverter( - element, - IConverterFactory.MODE_DESIGNER, - document); + ITagConverter tagConverter = + getTagConverter(wrapper, "h", "commandLink", IConverterFactory.MODE_DESIGNER); assertNotNull(tagConverter); //invoke ITagConverter instance @@ -519,42 +614,16 @@ public class Test_TransformOperations extends TestCase { ContextWrapper wrapper = null; try { wrapper = getDocumentContext("/WebContent/Test_TransformOperations.jsp", docOffset); - IStructuredDocumentContext context = wrapper.getContext(); - IDOMContextResolver resolver = - IStructuredDocumentContextResolverFactory.INSTANCE. - getDOMContextResolver(context); - - //get Element - Node node = resolver.getNode(); - if ( - node instanceof Element && - node.getPrefix().equals(prefix) && - node.getLocalName().equals(localName)) { - - Element element = (Element)node; - - //get IDOMDocument - IStructuredModel model = wrapper.getModel(); - if (model instanceof IDOMModel) { - IDOMDocument document = ((IDOMModel)model).getDocument(); - if (document != null) { - - //get ITagConverter instance - ITagConverter tagConverter = DTManager.getInstance().getTagConverter( - element, - IConverterFactory.MODE_DESIGNER, - document); - if (tagConverter != null) { - - //invoke ITagConverter instance - tagConverter.convertRefresh(null); - - //get result element - resultElement = tagConverter.getResultElement(); - } - } - } - } + ITagConverter tagConverter = + getTagConverter(wrapper, prefix, localName, IConverterFactory.MODE_DESIGNER); + + if (tagConverter != null) { + //invoke ITagConverter instance + tagConverter.convertRefresh(null); + + //get result element + resultElement = tagConverter.getResultElement(); + } } finally { if (wrapper != null) { wrapper.dispose(); @@ -563,6 +632,40 @@ public class Test_TransformOperations extends TestCase { return resultElement; } + private ITagConverter getTagConverter(ContextWrapper wrapper, String prefix, + String localName, int mode) throws Exception { + ITagConverter tagConverter = null; + IStructuredDocumentContext context = wrapper.getContext(); + IDOMContextResolver resolver = + IStructuredDocumentContextResolverFactory.INSTANCE. + getDOMContextResolver(context); + + //get Element + Node node = resolver.getNode(); + if (node instanceof Element + && node.getPrefix().equals(prefix) + && node.getLocalName().equals(localName)) { + + Element element = (Element)node; + + //get IDOMDocument + IStructuredModel model = wrapper.getModel(); + if (model instanceof IDOMModel) { + IDOMDocument document = ((IDOMModel)model).getDocument(); + if (document != null) { + + //get ITagConverter instance + tagConverter = DTManager.getInstance().getTagConverter( + element, + mode, + document); + } + } + } + + return tagConverter; + } + private ContextWrapper getDocumentContext(String path, int offset) throws Exception { IProject project = webProjectTestEnv.getTestProject(); IFile jspFile = project.getFile(new Path(path)); @@ -597,5 +700,4 @@ public class Test_TransformOperations extends TestCase { model.releaseFromRead(); } } - } |
