PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-webdriver-tests/src/main/java/com/atlassian/jira/webtest/webdriver/tests/projectconfig/TestSummaryIssueTypesPanel.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 176 lines | 115 code | 34 blank | 27 comment | 0 complexity | 2e55d9e3e294daa9e57131a763f38e0f MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtest.webdriver.tests.projectconfig;
  2. import com.atlassian.integrationtesting.runner.restore.Restore;
  3. import com.atlassian.jira.functest.framework.rule.IssueTypeUrls;
  4. import com.atlassian.jira.functest.framework.suite.Category;
  5. import com.atlassian.jira.functest.framework.suite.WebTest;
  6. import com.atlassian.jira.pageobjects.BaseJiraWebTest;
  7. import com.atlassian.jira.pageobjects.pages.admin.issuetype.ChangeIssueTypeSchemePage;
  8. import com.atlassian.jira.pageobjects.project.summary.ProjectSummaryPageTab;
  9. import com.atlassian.jira.pageobjects.project.summary.issuetypes.IssueTypesPanel;
  10. import com.google.common.collect.Lists;
  11. import org.junit.Before;
  12. import org.junit.Rule;
  13. import org.junit.Test;
  14. import java.util.Collections;
  15. import java.util.List;
  16. import static org.junit.Assert.assertEquals;
  17. /**
  18. * Web test for the project configuration summary page's Issue Types panel.
  19. *
  20. * @since v4.4
  21. */
  22. @WebTest({Category.WEBDRIVER_TEST, Category.ADMINISTRATION, Category.PLUGINS, Category.PROJECTS, Category.IGNITE})
  23. @Restore("xml/projectconfig/TestProjectConfigSummaryIssueTypesPanel.xml")
  24. public class TestSummaryIssueTypesPanel extends BaseJiraWebTest {
  25. @Rule
  26. public IssueTypeUrls issueTypeUrls;
  27. private static final String HSP_KEY = "HSP";
  28. private static final String XSS_KEY = "XSS";
  29. private static final String MKY_KEY = "MKY";
  30. private static List<IssueTypesPanel.IssueTypeListItem> HSP_ISSUE_TYPES;
  31. private static List<IssueTypesPanel.IssueTypeListItem> XSS_ISSUE_TYPES;
  32. private static List<IssueTypesPanel.IssueTypeListItem> XSS_ISSUE_TYPES_WITH_BUG_ADDED;
  33. private static List<IssueTypesPanel.IssueTypeListItem> XSS_ISSUE_TYPES_WITH_BUG_AND_REORDERED;
  34. private static String baseUrl;
  35. @Before
  36. public void setUp() {
  37. baseUrl = jira.getProductInstance().getBaseUrl();
  38. String HSPUrl = createIssueTypesUrl("HSP");
  39. String XSSUrl = createIssueTypesUrl("XSS");
  40. issueTypeUrls = IssueTypeUrls.init(backdoor);
  41. HSP_ISSUE_TYPES = Lists.newArrayList(
  42. createListItem("<script>alert(\"wtf\");</script>",
  43. "/images/icons/newfeature.gif%22%20onLoad=%22alert('wtf')",
  44. HSPUrl + "/2", false),
  45. createListItem("Bug", issueTypeUrls.getIssueTypeUrl("bug"), HSPUrl + "/1", false),
  46. createListItem("Epic", issueTypeUrls.getIssueTypeUrl("epic"), HSPUrl + "/5", false),
  47. createListItem("Improvement", issueTypeUrls.getIssueTypeUrl("improvement"), HSPUrl + "/4",
  48. false),
  49. createListItem("Sub-task", issueTypeUrls.getIssueTypeUrl("sub-task"), HSPUrl + "/6", true),
  50. createListItem("Task", issueTypeUrls.getIssueTypeUrl("task"), HSPUrl + "/3", false)
  51. );
  52. XSS_ISSUE_TYPES = Lists.newArrayList(
  53. createListItem("Epic", issueTypeUrls.getIssueTypeUrl("epic"), HSPUrl + "/5", false)
  54. );
  55. XSS_ISSUE_TYPES_WITH_BUG_ADDED = Lists.newArrayList(
  56. createListItem("Bug", issueTypeUrls.getIssueTypeUrl("bug"), XSSUrl + "/1", false),
  57. createListItem("Epic", issueTypeUrls.getIssueTypeUrl("epic"), XSSUrl + "/5", false)
  58. );
  59. XSS_ISSUE_TYPES_WITH_BUG_AND_REORDERED = Lists.newArrayList(
  60. createListItem("Bug", issueTypeUrls.getIssueTypeUrl("bug"), XSSUrl + "/1", false),
  61. createListItem("Epic", issueTypeUrls.getIssueTypeUrl("epic"), XSSUrl + "/5", false)
  62. );
  63. }
  64. @Test
  65. public void testListIssueTypesForProject() {
  66. final List<IssueTypesPanel.IssueTypeListItem> issueTypes = navigateToSummaryPageFor(HSP_KEY)
  67. .openPanel(IssueTypesPanel.class)
  68. .issueTypes();
  69. assertEquals(HSP_ISSUE_TYPES, issueTypes);
  70. }
  71. // @Test
  72. // public void testChangeIssueTypesInCurrentIssueTypeScheme()
  73. // {
  74. // final ProjectSummaryPageTab hspSummaryPage = navigateToSummaryPageFor(XSS_KEY);
  75. //
  76. // final IssueTypesPanel issueTypesPanel = hspSummaryPage.openPanel(IssueTypesPanel.class);
  77. // final List<IssueTypeListItem> issueTypes = issueTypesPanel.issueTypes();
  78. // assertEquals(XSS_ISSUE_TYPES, issueTypes);
  79. //
  80. // assertEquals(issueTypesPanel.getIssueTypeTabUrl(), createIssueTypesUrl(XSS_KEY));
  81. //
  82. // pageBinder.navigateToAndBind(EditIssueTypeSchemePage.class, "10010", "10010")
  83. // .moveFromAvailableToBelowSelected("Bug", "Epic")
  84. // .submitSave();
  85. //
  86. // final List<IssueTypeListItem> bugIssueTypeList = navigateToSummaryPageFor(XSS_KEY)
  87. // .openPanel(IssueTypesPanel.class)
  88. // .issueTypes();
  89. //
  90. // assertEquals(XSS_ISSUE_TYPES_WITH_BUG_ADDED, bugIssueTypeList);
  91. //
  92. // }
  93. @Test
  94. public void testChangeToDifferentIssueTypeScheme() {
  95. final IssueTypesPanel issueTypesPanel = navigateToSummaryPageFor(HSP_KEY)
  96. .openPanel(IssueTypesPanel.class);
  97. final List<IssueTypesPanel.IssueTypeListItem> originalIssueTypes = issueTypesPanel.issueTypes();
  98. assertEquals(HSP_ISSUE_TYPES, originalIssueTypes);
  99. pageBinder.navigateToAndBind(ChangeIssueTypeSchemePage.class, "10000")
  100. .chooseExistingIssueTypeScheme("Improved Issue Type Scheme");
  101. final IssueTypesPanel modifiedIssueTypesPanel = navigateToSummaryPageFor(HSP_KEY)
  102. .openPanel(IssueTypesPanel.class);
  103. final List<IssueTypesPanel.IssueTypeListItem> modifiedIssueTypes = modifiedIssueTypesPanel.issueTypes();
  104. assertEquals("Improved Issue Type Scheme", modifiedIssueTypesPanel.getIssueTypeTabLinkText());
  105. assertEquals(XSS_ISSUE_TYPES, modifiedIssueTypes);
  106. }
  107. @Test
  108. public void testCorrectIssueTypeOrder() {
  109. pageBinder.navigateToAndBind(ChangeIssueTypeSchemePage.class, "10010")
  110. .chooseExistingIssueTypeScheme("BugBelowEpic");
  111. final IssueTypesPanel issueTypesPanel = navigateToSummaryPageFor(XSS_KEY)
  112. .openPanel(IssueTypesPanel.class);
  113. final List<IssueTypesPanel.IssueTypeListItem> epicAndBugIssueTypeList = issueTypesPanel
  114. .issueTypes();
  115. assertEquals(XSS_ISSUE_TYPES_WITH_BUG_ADDED, epicAndBugIssueTypeList);
  116. pageBinder.navigateToAndBind(ChangeIssueTypeSchemePage.class, "10010")
  117. .chooseExistingIssueTypeScheme("EpicBelowBug");
  118. final List<IssueTypesPanel.IssueTypeListItem> bugAndEpicIssueTypeList = navigateToSummaryPageFor(XSS_KEY)
  119. .openPanel(IssueTypesPanel.class)
  120. .issueTypes();
  121. assertEquals(XSS_ISSUE_TYPES_WITH_BUG_AND_REORDERED, bugAndEpicIssueTypeList);
  122. }
  123. @Test
  124. public void testNoIssueTypesInCurrentIssueTypeScheme() {
  125. final IssueTypesPanel issueTypesPanel =
  126. navigateToSummaryPageFor(MKY_KEY).openPanel(IssueTypesPanel.class);
  127. final List<IssueTypesPanel.IssueTypeListItem> emptyIssueTypesList = issueTypesPanel
  128. .issueTypes();
  129. assertEquals(Collections.EMPTY_LIST, emptyIssueTypesList);
  130. assertEquals("No issue types associated", issueTypesPanel.getNoIssueTypesMessage());
  131. }
  132. private ProjectSummaryPageTab navigateToSummaryPageFor(final String projectKey) {
  133. return pageBinder.navigateToAndBind(ProjectSummaryPageTab.class, projectKey);
  134. }
  135. private IssueTypesPanel.IssueTypeListItem createListItem(final String issueTypeName, final String iconImage,
  136. final String issueTypeLink, boolean isSubtask) {
  137. return new IssueTypesPanel.IssueTypeListItem(issueTypeName, baseUrl + iconImage, issueTypeLink, isSubtask);
  138. }
  139. private String createIssueTypesUrl(String projectKey) {
  140. return baseUrl + "/plugins/servlet/project-config/" + projectKey + "/issuetypes";
  141. }
  142. }