diff options
| author | Esteban Dugueperoux | 2015-10-27 15:48:09 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-11-13 09:08:16 +0000 |
| commit | 44badb1d10c3b0f5028218ee5ef0949a3ec76361 (patch) | |
| tree | cc05ebe366e03deb3a0caba6f942f7532ee313e0 | |
| parent | 245c933c75c9daceebc0a1ca7e97aaba68dafc57 (diff) | |
| download | org.eclipse.sirius-44badb1d10c3b0f5028218ee5ef0949a3ec76361.tar.gz org.eclipse.sirius-44badb1d10c3b0f5028218ee5ef0949a3ec76361.tar.xz org.eclipse.sirius-44badb1d10c3b0f5028218ee5ef0949a3ec76361.zip | |
[481731] Add test to reveal the problem
- Add PropertyViewOnModelExplorerSelectionWithLockedObjectTest SWTBot
test to reveal the problem.
Bug: 481731
Change-Id: If2d285b10b7ce261bb19a9b1b144e83260012cc9
Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr>
(cherry picked from commit 5e82f5a1f1d77e353c3c6bbd6e86d5e5497f3cb5)
2 files changed, 152 insertions, 5 deletions
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/modelexplorer/PropertyViewOnModelExplorerSelectionWithLockedObjectTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/modelexplorer/PropertyViewOnModelExplorerSelectionWithLockedObjectTest.java new file mode 100644 index 0000000000..178b41b7d3 --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/modelexplorer/PropertyViewOnModelExplorerSelectionWithLockedObjectTest.java @@ -0,0 +1,143 @@ +/******************************************************************************* + * Copyright (c) 2015 Obeo. + * All rights reserved. This program and the accompanying materials + * are 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.tests.swtbot.modelexplorer; + +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.sirius.ecore.extender.business.api.accessor.ExtenderConstants; +import org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionProvider; +import org.eclipse.sirius.ecore.extender.business.internal.permission.DefaultPermissionProvider; +import org.eclipse.sirius.ecore.extender.business.internal.permission.PermissionProviderDescriptor; +import org.eclipse.sirius.ecore.extender.business.internal.permission.PermissionService; +import org.eclipse.sirius.ecore.extender.business.internal.permission.ReadOnlyPermissionAuthority; +import org.eclipse.sirius.ecore.extender.business.internal.permission.descriptors.StandalonePermissionProviderDescriptor; +import org.eclipse.sirius.tests.swtbot.Activator; +import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase; +import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource; +import org.eclipse.sirius.ui.tools.api.views.modelexplorerview.IModelExplorerView; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; +import org.eclipse.swtbot.eclipse.gef.finder.matchers.IsInstanceOf; +import org.eclipse.swtbot.swt.finder.SWTBot; +import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException; +import org.eclipse.swtbot.swt.finder.utils.TableRow; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; + +/** + * Test the use of property view on ModelExplorerView {@link EObject} selection + * for locked object. + * + * @see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=480203">Bug + * 480203</a> + * @author <a href="mailto:esteban.dugueperoux@obeo.fr">Esteban Dugueperoux</a> + */ +public class PropertyViewOnModelExplorerSelectionWithLockedObjectTest extends AbstractSiriusSwtBotGefTestCase { + + private static final String SEMANTIC_RESOURCE_NAME = "VP-3832.ecore"; + + private static final String REPRESENTATIONS_RESOURCE_NAME = "VP-3832.aird"; + + private static final String PATH = "data/unit/VP-3832/"; + + private UIResource sessionAirdResource; + + private SWTBot modelExplorerViewBot; + + private SWTBot propertyViewBot; + + private PermissionProviderDescriptor permissionProviderDescriptor; + + @Override + protected void onSetUpBeforeClosingWelcomePage() throws Exception { + copyFileToTestProject(Activator.PLUGIN_ID, PATH, SEMANTIC_RESOURCE_NAME, REPRESENTATIONS_RESOURCE_NAME); + } + + @Override + protected void onSetUpAfterOpeningDesignerPerspective() throws Exception { + ReadOnlyPermissionAuthority readOnlyPermissionAuthority = new ReadOnlyPermissionAuthority(); + readOnlyPermissionAuthority.activate(); + IPermissionProvider permissionProvider = new DefaultPermissionProvider(readOnlyPermissionAuthority); + permissionProviderDescriptor = new StandalonePermissionProviderDescriptor("org.eclipse.sirius.tests.swtbot.lockModelExplorerPermissionAuthorityProvider", ExtenderConstants.HIGHEST_PRIORITY, + permissionProvider); + PermissionService.addExtension(permissionProviderDescriptor); + + sessionAirdResource = new UIResource(designerProject, REPRESENTATIONS_RESOURCE_NAME); + localSession = designerPerspective.openSessionFromFile(sessionAirdResource, true); + + SWTBotView modelExplorerView = bot.viewById(IModelExplorerView.ID); + modelExplorerView.setFocus(); + modelExplorerViewBot = modelExplorerView.bot(); + + SWTBotView propertyView = bot.viewById("org.eclipse.ui.views.PropertySheet"); + propertyView.setFocus(); + propertyViewBot = propertyView.bot(); + } + + /** + * Test the display and the edition of properties in properties view on + * ModelExplorerView EObject selection. + */ + public void testPropertyViewEditionOnModelExplorerViewSelectionForLockedObject() { + // Check that properties view display something on treeItem selection of + // semantic resource treeItem + SWTBotTreeItem projectTreeItemBot = modelExplorerViewBot.tree().expandNode(getProjectName(), true); + SWTBotTreeItem representationsResourceTreeItemBot = projectTreeItemBot.getNode(REPRESENTATIONS_RESOURCE_NAME); + SWTBotTreeItem semanticResourceTreeItemBot = representationsResourceTreeItemBot.getNode(1); + semanticResourceTreeItemBot.select(); + assertEmptyPropertiesView(true); + SWTBotTreeItem rootEPackageTreeItemBot = semanticResourceTreeItemBot.getNode(0); + rootEPackageTreeItemBot.select(); + assertEmptyPropertiesView(false); + SWTBotTreeItem packageEntitiesRepTreeItemBot = rootEPackageTreeItemBot.getNode(0); + packageEntitiesRepTreeItemBot.select(); + assertEmptyPropertiesView(true); + SWTBotTreeItem newEClass1TreeItemBot = rootEPackageTreeItemBot.getNode("NewEClass1"); + newEClass1TreeItemBot.select(); + assertEmptyPropertiesView(false); + + // Check that properties of semantic element named "NewEClass1" are + // editable + TableRow row = propertyViewBot.tree().getTreeItem("Name").select().doubleClick().row(); + String currentName = row.get(1); + String newName = "renamedEClass"; + try { + propertyViewBot.text().setText(newName); + fail("Property should not be editable"); + } catch (WidgetNotFoundException e) { + + } + newEClass1TreeItemBot.select(); + assertEquals("The semantic element should have its name unchanged", currentName, newEClass1TreeItemBot.getText()); + + PermissionService.removeExtension(permissionProviderDescriptor); + } + + private void assertEmptyPropertiesView(boolean emptyPropertiesView) { + List<Tree> findedTrees = propertyViewBot.getFinder().findControls(IsInstanceOf.instanceOf(Tree.class)); + boolean result = findedTrees.isEmpty() || (!findedTrees.isEmpty() && !propertyViewBot.tree().hasItems()); + if (emptyPropertiesView) { + assertTrue("The properties view is expected to be empty.", result); + } else { + assertFalse("The properties view is not expected to be empty.", result); + } + } + + @Override + public void tearDown() throws Exception { + PermissionService.removeExtension(permissionProviderDescriptor); + permissionProviderDescriptor = null; + propertyViewBot = null; + modelExplorerViewBot = null; + sessionAirdResource = null; + super.tearDown(); + } +} diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java index fc8560ca42..c12bb399db 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java @@ -10,11 +10,6 @@ *******************************************************************************/ package org.eclipse.sirius.tests.swtbot.suite; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import junit.textui.TestRunner; - import org.eclipse.emf.common.util.URI; import org.eclipse.emf.common.util.WrappedException; import org.eclipse.emf.ecore.resource.Resource; @@ -55,6 +50,8 @@ import org.eclipse.sirius.tests.swtbot.modelexplorer.LockedModelExplorerTest; import org.eclipse.sirius.tests.swtbot.modelexplorer.ModelExplorerFilterTests; import org.eclipse.sirius.tests.swtbot.modelexplorer.ProjectDependenciesTest; import org.eclipse.sirius.tests.swtbot.modelexplorer.ProjectsConcurrentCloseTest; +import org.eclipse.sirius.tests.swtbot.modelexplorer.PropertyViewOnModelExplorerSelectionTests; +import org.eclipse.sirius.tests.swtbot.modelexplorer.PropertyViewOnModelExplorerSelectionWithLockedObjectTest; import org.eclipse.sirius.tests.swtbot.modelexplorer.RepresentationVisibilityAfterSessionReloadTest; import org.eclipse.sirius.tests.swtbot.tabbar.LockedTabBarTest; import org.eclipse.sirius.tests.swtbot.tabbar.NotInvisibleTabBarTest; @@ -66,6 +63,11 @@ import org.eclipse.sirius.tests.swtbot.uml.CopyPasteLayoutOfPortsWithConflictWit import org.eclipse.sirius.tests.swtbot.uml.PortLocationAfterDragAndDropOnDiagramTest; import org.eclipse.sirius.tests.swtbot.uml.PortLocationAfterDragAndDropTest; +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import junit.textui.TestRunner; + /** * All SWTBot tests. * @@ -344,6 +346,8 @@ public class AllTestSuite extends TestCase { suite.addTestSuite(ModelExplorerFilterTests.class); suite.addTestSuite(ProjectDependenciesTest.class); suite.addTestSuite(ProjectsConcurrentCloseTest.class); + suite.addTestSuite(PropertyViewOnModelExplorerSelectionWithLockedObjectTest.class); + suite.addTestSuite(PropertyViewOnModelExplorerSelectionTests.class); suite.addTestSuite(ContextualMenuTest.class); suite.addTestSuite(BracketEdgeTests.class); suite.addTestSuite(EdgeCopyPasteLayoutTest.class); |
