PageRenderTime 23ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-func-tests/src/main/java/com/atlassian/jira/webtests/ztests/customfield/TestMultiSelectCustomFieldOptions.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 180 lines | 123 code | 25 blank | 32 comment | 0 complexity | af93c96610ada2673a239b64f15ef25c MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtests.ztests.customfield;
  2. import com.atlassian.jira.functest.framework.Administration;
  3. import com.atlassian.jira.functest.framework.BaseJiraFuncTest;
  4. import com.atlassian.jira.functest.framework.LocatorFactory;
  5. import com.atlassian.jira.functest.framework.LoginAs;
  6. import com.atlassian.jira.functest.framework.assertions.TextAssertions;
  7. import com.atlassian.jira.functest.framework.navigation.IssueNavigatorNavigation;
  8. import com.atlassian.jira.functest.framework.suite.Category;
  9. import com.atlassian.jira.functest.framework.suite.WebTest;
  10. import org.junit.Before;
  11. import org.junit.Test;
  12. import org.xml.sax.SAXException;
  13. import javax.inject.Inject;
  14. import static com.atlassian.jira.functest.framework.FunctTestConstants.ADMIN_USERNAME;
  15. import static com.atlassian.jira.functest.framework.backdoor.IssuesControl.LIST_VIEW_LAYOUT;
  16. @WebTest({Category.FUNC_TEST, Category.BROWSING, Category.CUSTOM_FIELDS})
  17. @LoginAs(user = ADMIN_USERNAME)
  18. public class TestMultiSelectCustomFieldOptions extends BaseJiraFuncTest {
  19. private static final String CUSTOM_FIELD_ID = "10004";
  20. private static final String OPTION_00 = "10015";
  21. private static final String OPTION_01 = "10016";
  22. private static final String OPTION_02 = "10017";
  23. private static final String OPTION_03 = "10018";
  24. @Inject
  25. private Administration administration;
  26. @Inject
  27. private LocatorFactory locator;
  28. @Inject
  29. private TextAssertions textAssertions;
  30. @Before
  31. public void setUp() {
  32. // Clean JIRA instance
  33. administration.restoreData("TestSelectCustomFieldOptions.xml");
  34. backdoor.issueNavControl().setPreferredSearchLayout(LIST_VIEW_LAYOUT, ADMIN_USERNAME);
  35. }
  36. @Test
  37. public void testEditOptions() throws SAXException {
  38. // Edit options
  39. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_00, "Honda");
  40. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_01, "Kawasaki");
  41. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_02, "Yamaha");
  42. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_03, "Suzuki");
  43. // We should be on the custom field edit page and should be able to see the option text
  44. tester.gotoPage("/secure/admin/ConfigureCustomField!default.jspa?customFieldId=" + CUSTOM_FIELD_ID);
  45. tester.assertTextPresent("Honda");
  46. tester.assertTextPresent("Kawasaki");
  47. tester.assertTextPresent("Yamaha");
  48. tester.assertTextPresent("Suzuki");
  49. // Should be able to change these again
  50. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_00, "Fiat");
  51. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_01, "Lambretta");
  52. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_02, "Vespa");
  53. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_03, "Aprilia");
  54. // We should be on the custom field edit page and should be able to see the option text
  55. tester.gotoPage("/secure/admin/ConfigureCustomField!default.jspa?customFieldId=" + CUSTOM_FIELD_ID);
  56. tester.assertTextPresent("Fiat");
  57. tester.assertTextPresent("Lambretta");
  58. tester.assertTextPresent("Vespa");
  59. tester.assertTextPresent("Aprilia");
  60. }
  61. @Test
  62. public void testDefaultShowsUpdatedOption() throws SAXException {
  63. // Set the default
  64. administration.customFields().setDefaultValue(CUSTOM_FIELD_ID, OPTION_00);
  65. tester.gotoPage("/secure/admin/ConfigureCustomField!default.jspa?customFieldId=" + CUSTOM_FIELD_ID);
  66. // Check the default is set
  67. locator.id("customfield_" + CUSTOM_FIELD_ID + "-value-default").getText().contains("option 00");
  68. // Edit options
  69. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_00, "Fiat");
  70. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_01, "Lambretta");
  71. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_02, "Vespa");
  72. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_03, "Aprilia");
  73. // Check the default now says Honda
  74. locator.id("customfield_" + CUSTOM_FIELD_ID + "-value-default").getText().contains("Honda");
  75. }
  76. @Test
  77. public void testDisable() throws SAXException {
  78. administration.customFields().disableOptions(CUSTOM_FIELD_ID, OPTION_00);
  79. tester.gotoPage("/secure/admin/ConfigureCustomField!default.jspa?customFieldId=" + CUSTOM_FIELD_ID);
  80. textAssertions.assertTextSequence(tester.getDialog().getResponseText(), new String[]{"option 00", "(disabled)"});
  81. administration.customFields().enableOptions(CUSTOM_FIELD_ID, OPTION_00);
  82. tester.gotoPage("/secure/admin/ConfigureCustomField!default.jspa?customFieldId=" + CUSTOM_FIELD_ID);
  83. tester.assertTextNotPresent("(disabled)");
  84. }
  85. @Test
  86. public void testSearchNewValues() throws SAXException {
  87. // Edit options
  88. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_00, "Honda");
  89. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_01, "Kawasaki");
  90. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_02, "Yamaha");
  91. administration.customFields().editOptionValue(CUSTOM_FIELD_ID, OPTION_03, "Suzuki");
  92. // Check the default now says Honda
  93. locator.id("customfield_" + CUSTOM_FIELD_ID + "-value-default").getText().contains("Honda");
  94. administration.reIndex();
  95. // Search for Hondas, there should be 3
  96. createSearchAndAssertIssues("MultiSelectField = Honda ORDER BY key ASC", "HSP-10", "HSP-11", "HSP-12");
  97. // Search for Kawasaki, there should be 2
  98. createSearchAndAssertIssues("MultiSelectField = Kawasaki ORDER BY key ASC", "HSP-12");
  99. }
  100. @Test
  101. public void testDisabledNotValidForCreate() throws SAXException {
  102. // Disable "option 00"
  103. administration.customFields().disableOptions(CUSTOM_FIELD_ID, OPTION_00);
  104. // go to create issue
  105. navigation.issue().goToCreateIssueForm("homosapien", "Bug");
  106. // Check selectList values
  107. tester.assertOptionsEqual("customfield_" + CUSTOM_FIELD_ID, new String[]{"None", "option 01", "option 02", "option 03"});
  108. // Enable "option 00"
  109. administration.customFields().enableOptions(CUSTOM_FIELD_ID, OPTION_00);
  110. // go to create issue
  111. navigation.issue().goToCreateIssueForm("homosapien", "Bug");
  112. // Check selectList values
  113. tester.assertOptionsEqual("customfield_" + CUSTOM_FIELD_ID, new String[]{"None", "option 00", "option 01", "option 02", "option 03"});
  114. }
  115. @Test
  116. public void testDisabledNotValidForEdit() throws SAXException {
  117. // Disable "option 01"
  118. administration.customFields().disableOptions(CUSTOM_FIELD_ID, OPTION_01);
  119. // go to edit issue option 00 not already the selected value.
  120. navigation.issue().gotoEditIssue("HSP-11");
  121. // Check selectList values
  122. tester.assertOptionsEqual("customfield_" + CUSTOM_FIELD_ID, new String[]{"None", "option 00", "option 02", "option 03"});
  123. // Disable "option 00"
  124. administration.customFields().disableOptions(CUSTOM_FIELD_ID, OPTION_00);
  125. // go to edit issue option 00 not already the selected value.
  126. navigation.issue().gotoEditIssue("HSP-11");
  127. // Check selectList values
  128. tester.assertOptionsEqual("customfield_" + CUSTOM_FIELD_ID, new String[]{"None", "option 00", "option 02", "option 03"});
  129. // Enable "option 01"
  130. administration.customFields().enableOptions(CUSTOM_FIELD_ID, OPTION_00);
  131. administration.customFields().enableOptions(CUSTOM_FIELD_ID, OPTION_01);
  132. // go to edit issue option 00 not already the selected value.
  133. navigation.issue().gotoEditIssue("HSP-11");
  134. // Check selectList values
  135. tester.assertOptionsEqual("customfield_" + CUSTOM_FIELD_ID, new String[]{"None", "option 00", "option 01", "option 02", "option 03"});
  136. }
  137. @Test
  138. public void testDisabledValidForSearch() throws SAXException {
  139. // Disable "option 00"
  140. administration.customFields().disableOptions(CUSTOM_FIELD_ID, OPTION_00);
  141. // go to edit issue option 00 not already the selected value.
  142. navigation.issueNavigator().gotoNewMode(IssueNavigatorNavigation.NavigatorEditMode.SIMPLE);
  143. // Check selectList values
  144. tester.gotoPage("secure/QueryComponentRendererEdit!Default.jspa?fieldId=customfield_" + CUSTOM_FIELD_ID + "&decorator=none&jqlContext=");
  145. tester.assertTextPresent("option 00");
  146. tester.assertTextPresent("option 01");
  147. tester.assertTextPresent("option 02");
  148. tester.assertTextPresent("option 03");
  149. }
  150. private void createSearchAndAssertIssues(String jqlQuery, String... keys) {
  151. //Make sure we find the issues in the past.
  152. navigation.issueNavigator().createSearch(jqlQuery);
  153. assertions.getIssueNavigatorAssertions().assertExactIssuesInResults(keys);
  154. }
  155. }