/******************************************************************************* * Copyright (c) 2007-2008 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.vpe.jsf.test.jbide; import java.io.IOException; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.jboss.tools.common.model.filesystems.impl.SimpleFileImpl; import org.jboss.tools.common.model.impl.CustomizedObjectImpl; import org.jboss.tools.jsf.vpe.jsf.test.JsfAllTests; import org.jboss.tools.vpe.base.test.TestUtil; import org.jboss.tools.vpe.base.test.VpeTest; import org.jboss.tools.vpe.editor.VpeController; import org.jboss.tools.vpe.editor.util.SelectionUtil; import org.junit.Test; import org.mozilla.interfaces.nsIDOMNode; import org.w3c.dom.Node; import static org.junit.Assert.*; /** * * Junit test for JBIDE-4373 * * @author mareshkau * */ public class JBIDE4373Test extends VpeTest { public JBIDE4373Test() { } /** * OpenOn test for Custom elements */ @Test public void testCorrectCustomElements() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "correctCustomTags.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 13, 8); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); assertEquals("Name of node should be ma:paginator", "ma:paginator", sourceNode.getNodeName()); //$NON-NLS-1$ //$NON-NLS-2$ nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("facelets.taglib.xml file should be opened", "facelets.taglib.xml", //$NON-NLS-1$//$NON-NLS-2$ activeEditor.getEditorInput().getName()); IStructuredSelection selection = (IStructuredSelection) activeEditor.getEditorSite().getSelectionProvider() .getSelection(); // check pass only if we have been opened in our xml editor if (selection.getFirstElement() instanceof CustomizedObjectImpl) { CustomizedObjectImpl customizedObjectImpl = (CustomizedObjectImpl) selection.getFirstElement(); // Check if selection on right line, how? assertEquals("Children lenght should be ", "FileSystems/WEB-ROOT/tags/facelets.taglib.xml/paginator", //$NON-NLS-1$ //$NON-NLS-2$ customizedObjectImpl.getLongPath()); } } /** * test openOn for undefined template */ @Test public void testIncorrectCustomElements() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "incorrectCustomTags.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 9, 6); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); assertEquals("Name of node should be", "ma:test", sourceNode.getNodeName()); //$NON-NLS-1$ //$NON-NLS-2$ nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("facelets.taglib.xml file should be opened", "facelets.taglib.xml", //$NON-NLS-1$//$NON-NLS-2$ activeEditor.getEditorInput().getName()); IStructuredSelection selection = (IStructuredSelection) activeEditor.getEditorSite().getSelectionProvider() .getSelection(); // check pass only if we have been opened in our xml editor if (selection.getFirstElement() instanceof SimpleFileImpl) { SimpleFileImpl customizedObjectImpl = (SimpleFileImpl) selection.getFirstElement(); // check if selection on right line, how? assertEquals("Children lenght should be", "FileSystems/WEB-ROOT/tags/facelets.taglib.xml", //$NON-NLS-1$ //$NON-NLS-2$ customizedObjectImpl.getLongPath()); } } /** * test open on for following case <h:outputText value="#{msg.greeting}" /> * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForMessageBundlesInJSFElements() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "testOutputText.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 13, 30); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("file should be opened", "resources.properties", activeEditor.getEditorInput().getName()); //$NON-NLS-1$//$NON-NLS-2$ } /** * test open on for following case #{msg.prompt} * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForTextNodesMessageBundles() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "testOutputText.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 12, 15); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("file should be opened", "resources.properties", activeEditor.getEditorInput().getName()); //$NON-NLS-1$//$NON-NLS-2$ } /** * Test openOn mechanism for VpeDefineContainerTemplate in facelets' * ui:composition template (VpeCompositionTemplate). * * @throws CoreException * @throws IOException */ @Test public void testOpenOnforFacelets() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "inputName.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 10, 38); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("facelets.taglib.xml file should be opened", "common.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeDefineContainerTemplate in facelets' * ui:decorate template (VpeDecorateTemplate). * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForUiDecorate() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "ui-decorate.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 11, 33); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("/templates/insert.xhtml file should be opened", "insert.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeDefineContainerTemplate in facelets' * ui:define template (VpeDefineTemplate). * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForUiDefine() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "ui-define.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 6, 40); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("/templates/insert.xhtml file should be opened", "insert.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeDefineContainerTemplate in JSTL's c:import * template (JstlImportTemplate). * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForCImport() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "c-import.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 12, 25); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("import.html file should be opened", "import.html", activeEditor.getEditorInput().getName()); //$NON-NLS-1$ //$NON-NLS-2$ } /** * Test openOn mechanism for VpeIncludeTemplate in ajax4jsf a4j:include. * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForA4JInclude() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "a4j-include.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 15, 55); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("/pages/import.html file should be opened", "import.html", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeIncludeTemplate in facelets' ui:include. * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForUiInclude() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "ui-include-relative.xhtml"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 13, 27); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("/pages/import.html file should be opened", "import.html", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeIncludeTemplate in jsp's * jsp:directive.include. * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForJspDirectiveInclude() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "jsp-directive-include-relative.jsp"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 13, 46); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("jsp-include.jsp file should be opened", "jsp-include.jsp", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test openOn mechanism for VpeIncludeTemplate in jsp's jsp:include. * * @throws CoreException * @throws IOException */ @Test public void testOpenOnForJspInclude() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_CUSTOM_FACELETS_PROJECT, "jsp-include-relative.jsp"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 13, 36); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("jsp-include.jsp file should be opened", "jsp-include.jsp", //$NON-NLS-1$ //$NON-NLS-2$ activeEditor.getEditorInput().getName()); } /** * Test open on for <a href="pageName" >Link Text</> * https://jira.jboss.org/jira/browse/JBIDE-5183 * * @throws CoreException * * @author mareshkau */ @Test public void testOpenOnForHREF() throws CoreException, IOException { VpeController vpeController = openInVpe(JsfAllTests.IMPORT_PROJECT_NAME, "JBIDE/5183/a.html"); //$NON-NLS-1$ int position = TestUtil.getLinePositionOffcet(vpeController.getSourceEditor().getTextViewer(), 5, 41); Node sourceNode = SelectionUtil.getNodeBySourcePosition(vpeController.getSourceEditor(), position); nsIDOMNode domNode = vpeController.getDomMapping().getNearVisualNode(sourceNode); vpeController.getSourceBuilder().openOn(domNode); IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor(); assertEquals("File should be opened", "opened.html", activeEditor.getEditorInput().getName()); //$NON-NLS-1$ //$NON-NLS-2$ } }