/******************************************************************************* | |
* Copyright (c) 2012 Ericsson Research Canada | |
* | |
* 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 | |
* | |
* Description: | |
* | |
* This class implements a JUnit Test Case for the Sanity test setup | |
* | |
* Contributors: | |
* Sebastien Dubois - Created for Mylyn Review R4E project | |
* | |
******************************************************************************/ | |
package org.eclipse.mylyn.reviews.r4e.ui.tests.sanity; | |
import java.io.File; | |
import java.net.URL; | |
import junit.framework.Assert; | |
import junit.framework.Test; | |
import junit.framework.TestCase; | |
import junit.framework.TestSuite; | |
import org.eclipse.core.commands.ExecutionException; | |
import org.eclipse.core.commands.NotEnabledException; | |
import org.eclipse.core.commands.NotHandledException; | |
import org.eclipse.core.commands.common.NotDefinedException; | |
import org.eclipse.core.runtime.Path; | |
import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException; | |
import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewGroup; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRule; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRuleArea; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRuleSet; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRuleViolation; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.UIUtils; | |
import org.eclipse.mylyn.reviews.r4e.ui.tests.R4ETestSetup; | |
import org.eclipse.mylyn.reviews.r4e.ui.tests.proxy.R4EUITestMain; | |
import org.eclipse.mylyn.reviews.r4e.ui.tests.utils.TestConstants; | |
import org.eclipse.mylyn.reviews.r4e.ui.tests.utils.TestUtils; | |
import org.junit.After; | |
import org.junit.Before; | |
@SuppressWarnings("restriction") | |
public class SanitySetupTests extends TestCase { | |
// ------------------------------------------------------------------------ | |
// Member variables | |
// ------------------------------------------------------------------------ | |
private R4EUITestMain fProxy = null; | |
// ------------------------------------------------------------------------ | |
// Methods | |
// ------------------------------------------------------------------------ | |
/** | |
* Method suite - Sets up the global test environment, if not already done at the suite level. | |
* | |
* @return Test | |
*/ | |
public static Test suite() { | |
TestSuite suite = new TestSuite(); | |
suite.addTestSuite(SanitySetupTests.class); | |
return new R4ETestSetup(suite); | |
} | |
/** | |
* Method setUp - Sets up the fixture, for example, open a network connection. This method is called before a test | |
* is executed. | |
* | |
* @throws java.lang.Exception | |
*/ | |
@Override | |
@Before | |
public void setUp() throws Exception { | |
fProxy = R4EUITestMain.getInstance(); | |
} | |
/** | |
* Method tearDown | |
* | |
* @throws java.lang.Exception | |
*/ | |
@Override | |
@After | |
public void tearDown() throws Exception { | |
fProxy = null; | |
} | |
/** | |
* Method testSetup | |
* | |
* @throws ExecutionException | |
* @throws NotDefinedException | |
* @throws NotEnabledException | |
* @throws NotHandledException | |
* @throws ResourceHandlingException | |
* @throws OutOfSyncException | |
*/ | |
public void testSetup() { | |
createRuleSetSetup(); | |
createReviewGroupSetup(); | |
verifyHelp(); | |
} | |
/** | |
* Method createReviewGroupSetup | |
* | |
* @throws ExecutionException | |
* @throws NotDefinedException | |
* @throws NotEnabledException | |
* @throws NotHandledException | |
* @throws ResourceHandlingException | |
* @throws OutOfSyncException | |
*/ | |
public void createReviewGroupSetup() { | |
//Create Review Group | |
R4EUIReviewGroup newGroup = fProxy.getReviewGroupProxy().createReviewGroup( | |
TestUtils.FSharedFolder + File.separator + TestConstants.REVIEW_GROUP_TEST_NAME, | |
TestConstants.REVIEW_GROUP_TEST_NAME, TestConstants.REVIEW_GROUP_TEST_DESCRIPTION, | |
TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA, TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS, | |
TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS, new String[0]); | |
Assert.assertNotNull(newGroup); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_NAME, newGroup.getReviewGroup().getName()); | |
Assert.assertEquals(new Path(TestUtils.FSharedFolder).toPortableString() + "/" | |
+ TestConstants.REVIEW_GROUP_TEST_NAME, newGroup.getReviewGroup().getFolder()); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_DESCRIPTION, newGroup.getReviewGroup().getDescription()); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA, newGroup.getReviewGroup() | |
.getDefaultEntryCriteria()); | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS[i], newGroup.getReviewGroup() | |
.getAvailableProjects() | |
.get(i)); | |
} | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS[i], newGroup.getReviewGroup() | |
.getAvailableComponents() | |
.get(i)); | |
} | |
String newGroupName = newGroup.getName(); | |
//Create a second Review Group | |
R4EUIReviewGroup newGroup2 = fProxy.getReviewGroupProxy().createReviewGroup( | |
TestUtils.FSharedFolder + File.separator + TestConstants.REVIEW_GROUP_TEST_NAME2, | |
TestConstants.REVIEW_GROUP_TEST_NAME2, TestConstants.REVIEW_GROUP_TEST_DESCRIPTION, | |
TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA, TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS, | |
TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS, new String[0]); | |
Assert.assertNotNull(newGroup2); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_NAME2, newGroup2.getReviewGroup().getName()); | |
Assert.assertEquals(new Path(TestUtils.FSharedFolder).toPortableString() + "/" | |
+ TestConstants.REVIEW_GROUP_TEST_NAME2, newGroup2.getReviewGroup().getFolder()); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_DESCRIPTION, newGroup2.getReviewGroup().getDescription()); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA, newGroup2.getReviewGroup() | |
.getDefaultEntryCriteria()); | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS[i], newGroup2.getReviewGroup() | |
.getAvailableProjects() | |
.get(i)); | |
} | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS[i], newGroup2.getReviewGroup() | |
.getAvailableComponents() | |
.get(i)); | |
} | |
//Close a Review Group | |
fProxy.getCommandProxy().closeElement(newGroup); | |
Assert.assertFalse(newGroup.isOpen()); | |
//Open the closed Review Group | |
fProxy.getCommandProxy().openElement(newGroup); | |
Assert.assertTrue(newGroup.isOpen()); | |
//Remove Review Group from preferences | |
String prefsGroup = newGroup2.getReviewGroup().eResource().getURI().toFileString(); | |
fProxy.getPreferencesProxy().removeGroupFromPreferences(prefsGroup); | |
for (R4EUIReviewGroup group : R4EUIModelController.getRootElement().getGroups()) { | |
if (group.getReviewGroup().getName().equals(newGroup2.getReviewGroup().getName())) { | |
fail("Group " + prefsGroup + " should not be present since it was removed from preferences"); | |
} | |
} | |
//Add back Review Group to preferences | |
boolean groupFound = false; | |
fProxy.getPreferencesProxy().addGroupToPreferences(prefsGroup); | |
for (R4EUIReviewGroup group : R4EUIModelController.getRootElement().getGroups()) { | |
if (group.getReviewGroup().getName().equals(newGroup2.getReviewGroup().getName())) { | |
groupFound = true; | |
break; | |
} | |
} | |
Assert.assertTrue(groupFound); | |
//Get back handle to Review Group since view is refreshed | |
for (IR4EUIModelElement elem : R4EUIModelController.getRootElement().getChildren()) { | |
if (newGroupName.equals(elem.getName())) { | |
newGroup = (R4EUIReviewGroup) elem; | |
} | |
} | |
fProxy.getCommandProxy().openElement(newGroup); | |
Assert.assertTrue(newGroup.isOpen()); | |
//Update Review Group properties | |
fProxy.getReviewGroupProxy().changeReviewGroupDescription(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_DESCRIPTION2); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_DESCRIPTION2, newGroup.getReviewGroup().getDescription()); | |
fProxy.getReviewGroupProxy().changeReviewGroupDefaultEntryCriteria(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA2); | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_ENTRY_CRITERIA2, newGroup.getReviewGroup() | |
.getDefaultEntryCriteria()); | |
fProxy.getReviewGroupProxy().removeReviewGroupAvailableProject(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_REM_AVAILABLE_PROJECT); | |
fProxy.getReviewGroupProxy().addReviewGroupAvailableProject(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_ADD_AVAILABLE_PROJECT); | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS2.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_PROJECTS2[i], newGroup.getReviewGroup() | |
.getAvailableProjects() | |
.get(i)); | |
} | |
fProxy.getReviewGroupProxy().removeReviewGroupAvailableComponent(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_REM_AVAILABLE_COMPONENT); | |
fProxy.getReviewGroupProxy().addReviewGroupAvailableComponent(newGroup, | |
TestConstants.REVIEW_GROUP_TEST_ADD_AVAILABLE_COMPONENT); | |
for (int i = 0; i < TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS2.length; i++) { | |
Assert.assertEquals(TestConstants.REVIEW_GROUP_TEST_AVAILABLE_COMPONENTS2[i], newGroup.getReviewGroup() | |
.getAvailableComponents() | |
.get(i)); | |
} | |
for (R4EUIRuleSet ruleSet : R4EUIModelController.getRootElement().getRuleSets()) { | |
if (ruleSet.getName().equals(TestConstants.RULE_SET_TEST_NAME2)) { | |
fProxy.getReviewGroupProxy().addReviewGroupRuleSet(newGroup, ruleSet.getRuleSet().getName()); | |
Assert.assertEquals(ruleSet.getRuleSet().getName(), newGroup.getReviewGroup() | |
.getDesignRuleLocations() | |
.get(0)); | |
break; | |
} | |
} | |
for (R4EUIRuleSet ruleSet : R4EUIModelController.getRootElement().getRuleSets()) { | |
if (ruleSet.getName().equals(TestConstants.RULE_SET_TEST_NAME)) { | |
fProxy.getReviewGroupProxy().addReviewGroupRuleSet(newGroup, ruleSet.getRuleSet().getName()); | |
} else if (ruleSet.getName().equals(TestConstants.RULE_SET_TEST_NAME2)) { | |
fProxy.getReviewGroupProxy().removeReviewGroupRuleSet(newGroup, ruleSet.getRuleSet().getName()); | |
} | |
} | |
for (R4EUIRuleSet ruleSet : R4EUIModelController.getRootElement().getRuleSets()) { | |
if (ruleSet.getName().equals(TestConstants.RULE_SET_TEST_NAME)) { | |
Assert.assertEquals(ruleSet.getRuleSet().getName(), newGroup.getReviewGroup() | |
.getDesignRuleLocations() | |
.get(0)); | |
break; | |
} | |
} | |
} | |
/** | |
* Method createRuleSetSetup | |
* | |
* @throws ExecutionException | |
* @throws NotDefinedException | |
* @throws NotEnabledException | |
* @throws NotHandledException | |
* @throws ResourceHandlingException | |
* @throws OutOfSyncException | |
*/ | |
public void createRuleSetSetup() { | |
//Create a Rule Set | |
R4EUIRuleSet newRuleSet = fProxy.getRuleSetProxy().createRuleSet(TestUtils.FSharedFolder, | |
TestConstants.RULE_SET_TEST_NAME, TestConstants.RULE_SET_TEST_VERSION); | |
Assert.assertNotNull(newRuleSet); | |
Assert.assertEquals(TestConstants.RULE_SET_TEST_VERSION, newRuleSet.getRuleSet().getVersion()); | |
Assert.assertEquals(new Path(TestUtils.FSharedFolder).toPortableString(), newRuleSet.getRuleSet().getFolder()); | |
Assert.assertEquals(TestConstants.RULE_SET_TEST_NAME, newRuleSet.getRuleSet().getName()); | |
//Create a second Rule Set | |
R4EUIRuleSet newRuleSet2 = fProxy.getRuleSetProxy().createRuleSet(TestUtils.FSharedFolder, | |
TestConstants.RULE_SET_TEST_NAME2, TestConstants.RULE_SET_TEST_VERSION); | |
String newRuleSet2Name = newRuleSet2.getName(); | |
Assert.assertNotNull(newRuleSet2); | |
Assert.assertEquals(TestConstants.RULE_SET_TEST_VERSION, newRuleSet2.getRuleSet().getVersion()); | |
Assert.assertEquals(new Path(TestUtils.FSharedFolder).toPortableString(), newRuleSet2.getRuleSet().getFolder()); | |
Assert.assertEquals(TestConstants.RULE_SET_TEST_NAME2, newRuleSet2.getRuleSet().getName()); | |
//Create Rule Area | |
R4EUIRuleArea newRuleArea = fProxy.getRuleAreaProxy().createRuleArea(newRuleSet, | |
TestConstants.RULE_AREA_TEST_NAME); | |
Assert.assertNotNull(newRuleArea); | |
Assert.assertEquals(TestConstants.RULE_AREA_TEST_NAME, newRuleArea.getArea().getName()); | |
//Create Rule Violation | |
R4EUIRuleViolation newRuleViolation = fProxy.getRuleViolationProxy().createRuleViolation(newRuleArea, | |
TestConstants.RULE_VIOLATION_TEST_NAME); | |
Assert.assertNotNull(newRuleViolation); | |
Assert.assertEquals(TestConstants.RULE_VIOLATION_TEST_NAME, newRuleViolation.getViolation().getName()); | |
//Create Rule | |
R4EUIRule newRule = fProxy.getRuleProxy().createRule(newRuleViolation, TestConstants.RULE_TEST_ID, | |
TestConstants.RULE_TEST_TITLE, TestConstants.RULE_TEST_DESCRIPTION, | |
UIUtils.getClassFromString(TestConstants.RULE_TEST_CLASS), | |
UIUtils.getRankFromString(TestConstants.RULE_TEST_RANK)); | |
Assert.assertNotNull(newRule); | |
Assert.assertEquals(TestConstants.RULE_TEST_ID, newRule.getRule().getId()); | |
Assert.assertEquals(TestConstants.RULE_TEST_TITLE, newRule.getRule().getTitle()); | |
Assert.assertEquals(TestConstants.RULE_TEST_DESCRIPTION, newRule.getRule().getDescription()); | |
Assert.assertEquals(UIUtils.getClassFromString(TestConstants.RULE_TEST_CLASS), newRule.getRule().getClass_()); | |
Assert.assertEquals(UIUtils.getRankFromString(TestConstants.RULE_TEST_RANK), newRule.getRule().getRank()); | |
//Close a Rule Set | |
fProxy.getCommandProxy().closeElement(newRuleSet); | |
Assert.assertFalse(newRuleSet.isOpen()); | |
//Open the closed Rule Set | |
fProxy.getCommandProxy().openElement(newRuleSet); | |
Assert.assertTrue(newRuleSet.isOpen()); | |
Assert.assertEquals(TestConstants.RULE_TEST_ID, | |
((R4EUIRule) newRuleSet.getChildren()[0].getChildren()[0].getChildren()[0]).getRule().getId()); | |
//Remove Rule Set from preferences | |
String prefsRuleSet = newRuleSet2.getRuleSet().eResource().getURI().toFileString(); | |
fProxy.getPreferencesProxy().removeRuleSetFromPreferences(prefsRuleSet); | |
for (R4EUIRuleSet ruleSet : R4EUIModelController.getRootElement().getRuleSets()) { | |
if (ruleSet.getRuleSet().getName().equals(newRuleSet2.getRuleSet().getName())) { | |
fail("RuleSet " + prefsRuleSet + " should not be present since it was removed from preferences"); | |
} | |
} | |
//Add back Rule Set to preferences | |
boolean ruleSetFound = false; | |
fProxy.getPreferencesProxy().addRuleSetToPreferences(prefsRuleSet); | |
for (R4EUIRuleSet ruleSet : R4EUIModelController.getRootElement().getRuleSets()) { | |
if (ruleSet.getRuleSet().getName().equals(newRuleSet2.getRuleSet().getName())) { | |
ruleSetFound = true; | |
break; | |
} | |
} | |
Assert.assertTrue(ruleSetFound); | |
for (IR4EUIModelElement elem : R4EUIModelController.getRootElement().getChildren()) { | |
if (newRuleSet2Name.equals(elem.getName())) { | |
newRuleSet2 = (R4EUIRuleSet) elem; | |
} | |
} | |
fProxy.getCommandProxy().openElement(newRuleSet2); | |
Assert.assertTrue(newRuleSet2.isOpen()); | |
} | |
/** | |
* Method verifyHelp | |
*/ | |
public void verifyHelp() { | |
//Verify R4E help is present | |
URL openUrl = fProxy.getHelp("/org.eclipse.mylyn.reviews.r4e.help/help/Reviews/R4E/User_Guide/User-Guide.html"); | |
Assert.assertNotNull(openUrl); | |
URL ericssonUrl = fProxy.getHelp("/com.ericsson.reviews.r4e.help/doc/r4eEricsson.html"); | |
Assert.assertNotNull(ericssonUrl); | |
} | |
} |