/******************************************************************************* * Copyright (c) 2007 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.vpe.jsf.test.jbide; import static org.jboss.tools.vpe.xulrunner.util.XPCOM.queryInterface; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.part.FileEditorInput; import org.jboss.tools.jsf.vpe.jsf.test.JsfAllTests; import org.jboss.tools.jst.web.ui.internal.editor.jspeditor.JSPMultiPageEditor; import org.jboss.tools.vpe.base.test.TestUtil; import org.jboss.tools.vpe.base.test.VpeTest; import org.jboss.tools.vpe.editor.util.HTML; import org.junit.Ignore; import org.junit.Test; import org.mozilla.interfaces.nsIDOMDocument; import org.mozilla.interfaces.nsIDOMElement; import org.mozilla.interfaces.nsIDOMNamedNodeMap; import org.mozilla.interfaces.nsIDOMNode; import org.mozilla.interfaces.nsIDOMNodeList; import static org.junit.Assert.*; /** * * @author sdzmitrovich * * test for http://jira.jboss.com/jira/browse/JBIDE-1718 * * */ public class JsfJbide1718Test extends VpeTest { private static final String DIR_TEST_PAGE_NAME = "JBIDE/1718/JBIDE-1718-dir.jsp"; //$NON-NLS-1$ private static final String ESCAPE_TEST_PAGE_NAME = "JBIDE/1718/JBIDE-1718-escape.jsp"; //$NON-NLS-1$ private static final String DISABLED_TEST_PAGE_NAME = "JBIDE/1718/JBIDE-1718-disabled.jsp"; //$NON-NLS-1$ private static final String FORMAT_TEST_PAGE_NAME = "JBIDE/1718/JBIDE-1718-format.jsp"; //$NON-NLS-1$ public JsfJbide1718Test() { } /** * * @throws Throwable */ //mareshkau, dir attributes was disabled due to JBIDE-3209 @Test @Ignore public void _testDirAttribute() throws Throwable { // wait TestUtil.waitForJobs(); // set exception setException(null); // get test page path IFile file = (IFile) TestUtil.getComponentPath(DIR_TEST_PAGE_NAME, JsfAllTests.IMPORT_PROJECT_NAME); IEditorInput input = new FileEditorInput(file); // open and get editor JSPMultiPageEditor part = openEditor(input); // get dom document nsIDOMDocument document = TestUtil.getVpeVisualDocument(part); assertNotNull(document); // get dom element nsIDOMElement element = document.getDocumentElement(); assertNotNull(element); // get root node nsIDOMNode node = queryInterface(element, nsIDOMNode.class); // find "b" elements List<nsIDOMNode> bElements = new ArrayList<nsIDOMNode>(); TestUtil.findElementsByName(node, bElements, HTML.TAG_B); // number of "b" elements must be 1 assertEquals(1, bElements.size()); nsIDOMNode b = bElements.get(0); List<nsIDOMNode> spanElements = new ArrayList<nsIDOMNode>(); List<nsIDOMNode> labelElements = new ArrayList<nsIDOMNode>(); List<nsIDOMNode> aElements = new ArrayList<nsIDOMNode>(); // find "span" elements in "b" tag TestUtil.findElementsByName(b, spanElements, HTML.TAG_SPAN); // find "label" elements in "b" TestUtil.findElementsByName(b, labelElements, HTML.TAG_LABEL); // find "a" elements in "b" TestUtil.findElementsByName(b, aElements, HTML.TAG_A); // number of "span" elements must be 2 assertEquals(2, spanElements.size()); // number of "label" elements must be 1 assertEquals(1, labelElements.size()); // number of "a" elements must be 1 assertEquals(1, aElements.size()); // join all elements List<nsIDOMNode> elements = new ArrayList<nsIDOMNode>(); elements.addAll(spanElements); elements.addAll(labelElements); elements.addAll(aElements); for (nsIDOMNode child : elements) { // get attributes nsIDOMNamedNodeMap attributes = child.getAttributes(); // all elements must have attributes assertNotNull(attributes); // all elements must have "dir" attribute assertNotNull(attributes.getNamedItem(HTML.ATTR_DIR)); } // check exception if (getException() != null) { throw getException(); } } /** * * @throws Throwable */ @Test public void testEscapeAttribute() throws Throwable { // wait TestUtil.waitForJobs(); // set exception setException(null); // get test page path IFile file = (IFile) TestUtil.getComponentPath(ESCAPE_TEST_PAGE_NAME, JsfAllTests.IMPORT_PROJECT_NAME); IEditorInput input = new FileEditorInput(file); // open and get editor JSPMultiPageEditor part = openEditor(input); // get dom document nsIDOMDocument document = TestUtil.getVpeVisualDocument(part); assertNotNull(document); // get dom element nsIDOMElement element = document.getDocumentElement(); assertNotNull(element); // get root node nsIDOMNode node = queryInterface(element, nsIDOMNode.class); List<nsIDOMNode> spanElements = new ArrayList<nsIDOMNode>(); // find "input" elements TestUtil.findElementsByName(node, spanElements, HTML.TAG_INPUT); // number of "input" elements must be 3 assertEquals(3, spanElements.size()); // check exception if (getException() != null) { throw getException(); } } /** * * @throws Throwable */ @Test public void testDisabledAttribute() throws Throwable { // wait TestUtil.waitForJobs(); // set exception setException(null); // get test page path IFile file = (IFile) TestUtil.getComponentPath(DISABLED_TEST_PAGE_NAME, JsfAllTests.IMPORT_PROJECT_NAME); IEditorInput input = new FileEditorInput(file); // open and get editor JSPMultiPageEditor part = openEditor(input); // get dom document nsIDOMDocument document = TestUtil.getVpeVisualDocument(part); assertNotNull(document); // get dom element nsIDOMElement element = document.getDocumentElement(); assertNotNull(element); // get root node nsIDOMNode node = queryInterface(element, nsIDOMNode.class); List<nsIDOMNode> aElements = new ArrayList<nsIDOMNode>(); // find "input" elements TestUtil.findElementsByName(node, aElements, HTML.TAG_A); // page has 2 <h:outputLink ...> tags but one from them have attribute // disabled="true", so number of "a" tags must be one assertEquals(1, aElements.size()); // check exception if (getException() != null) { throw getException(); } } /** * * @throws Throwable */ @Test public void testFormatMessageElements() throws Throwable { // wait TestUtil.waitForJobs(); // set exception setException(null); // get test page path IFile file = (IFile) TestUtil.getComponentPath(FORMAT_TEST_PAGE_NAME, JsfAllTests.IMPORT_PROJECT_NAME); IEditorInput input = new FileEditorInput(file); // open and get editor JSPMultiPageEditor part = openEditor(input); // get dom document nsIDOMDocument document = TestUtil.getVpeVisualDocument(part); assertNotNull(document); // get dom element nsIDOMElement element = document.getDocumentElement(); assertNotNull(element); // get root node nsIDOMNode node = queryInterface(element, nsIDOMNode.class); // find "b" elements List<nsIDOMNode> bElements = new ArrayList<nsIDOMNode>(); TestUtil.findElementsByName(node, bElements, HTML.TAG_B); // number of "b" elements must be 1 assertEquals(1, bElements.size()); nsIDOMNode b = bElements.get(0); List<nsIDOMNode> spanElements = new ArrayList<nsIDOMNode>(); // find "input" elements in b elements TestUtil.findElementsByName(b, spanElements, HTML.TAG_SPAN); // page has 2 <h:outputLink ...> tags but one from them have attribute // disabled="true", so number of "a" tags must be one assertEquals(1, spanElements.size()); nsIDOMNode span = spanElements.get(0); nsIDOMNodeList children = span.getChildNodes(); assertNotNull(children); boolean isFind = false; for (int i = 0; i < children.getLength(); i++) { nsIDOMNode text = children.item(i); if ("paramValue".equals(text.getNodeValue())) { //$NON-NLS-1$ isFind = true; break; } assertEquals(true, isFind); } // check exception if (getException() != null) { throw getException(); } } }