PageRenderTime 37ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-func-tests/src/main/java/com/atlassian/jira/functest/framework/assertions/JiraFormAssertionsImpl.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 184 lines | 147 code | 32 blank | 5 comment | 7 complexity | 88f44e215e64d3db7e5bacf65753f879 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.functest.framework.assertions;
  2. import com.atlassian.jira.functest.framework.LocatorFactory;
  3. import com.atlassian.jira.functest.framework.LocatorFactoryImpl;
  4. import com.atlassian.jira.functest.framework.locator.Locator;
  5. import com.atlassian.jira.functest.framework.locator.LocatorEntry;
  6. import com.atlassian.jira.functest.framework.locator.XPathLocator;
  7. import com.atlassian.jira.webtests.util.JIRAEnvironmentData;
  8. import net.sourceforge.jwebunit.WebTester;
  9. import org.junit.Assert;
  10. import javax.inject.Inject;
  11. import java.util.Arrays;
  12. import java.util.List;
  13. import static org.junit.Assert.assertTrue;
  14. import static org.junit.Assert.fail;
  15. /**
  16. * And implementation of {@link JiraFormAssertions}.
  17. *
  18. * @since v3.13
  19. */
  20. public class JiraFormAssertionsImpl implements JiraFormAssertions {
  21. private static final String AUI_MESSAGE_ERROR_CSS = ".aui-message.error";
  22. private static final String AUI_MESSAGE_WARNING_CSS = ".aui-message.warning";
  23. private static final String AUI_MESSAGE_INFO_CSS = ".aui-message.info";
  24. private final TextAssertions textAssertions;
  25. private final WebTester tester;
  26. private final LocatorFactory locators;
  27. @Inject
  28. public JiraFormAssertionsImpl(final TextAssertions textAssertions, final WebTester tester, final JIRAEnvironmentData environmentData) {
  29. this.textAssertions = textAssertions;
  30. this.tester = tester;
  31. this.locators = new LocatorFactoryImpl(tester);
  32. }
  33. public void assertFieldErrMsg(final String expectedText) {
  34. final Locator error = createFieldErrorMessageLocator();
  35. textAssertions.assertTextPresent(error, expectedText);
  36. }
  37. public void assertAuiFieldErrMsg(final String expectedText) {
  38. final Locator error = createAuiFieldErrorMessageLocator();
  39. textAssertions.assertTextPresent(error, expectedText);
  40. }
  41. public void assertFormErrMsg(final String expectedText) {
  42. final Locator error = createFormErrorMessageLocator();
  43. textAssertions.assertTextPresent(error, expectedText);
  44. }
  45. public void assertFormErrMsgContainsLink(final String linkExactText) {
  46. final Locator linksInErrorMsg = locators.css(AUI_MESSAGE_ERROR_CSS + " a");
  47. if (!nodeWithTextExists(linkExactText, linksInErrorMsg)) {
  48. fail("Link with text '" + linkExactText + "' not found in any error message");
  49. }
  50. }
  51. private boolean nodeWithTextExists(final String linkExactText, final Locator linksInErrorMsg) {
  52. for (final LocatorEntry link : linksInErrorMsg.allMatches()) {
  53. if (linkExactText.equals(link.getText())) {
  54. return true;
  55. }
  56. }
  57. return false;
  58. }
  59. @Override
  60. public void assertNoFieldErrMsg(final String notExpectedText) {
  61. textAssertions.assertTextNotPresent(createFieldErrorMessageLocator(), notExpectedText);
  62. }
  63. @Override
  64. public void assertNoFormErrMsg(final String notExpectedText) {
  65. textAssertions.assertTextNotPresent(createFormErrorMessageLocator(), notExpectedText);
  66. }
  67. @Override
  68. public void assertNoErrorsPresent() {
  69. Locator errorLocator = createFieldErrorMessageLocator();
  70. Assert.assertNull("Expected no errors on the page, but there was a field with an error.", errorLocator.getNode());
  71. errorLocator = createFormErrorMessageLocator();
  72. Assert.assertNull("Expected no errors on the page, but the page had a global error.", errorLocator.getNode());
  73. }
  74. @Override
  75. public void assertFormNotificationMsg(final String expectedText) {
  76. final Locator notification = createFormNotificationMessageLocator();
  77. textAssertions.assertTextPresent(notification, expectedText);
  78. }
  79. @Override
  80. public void assertNoFormNotificationMsg(final String notExpectedText) {
  81. textAssertions.assertTextNotPresent(createFormNotificationMessageLocator(), notExpectedText);
  82. }
  83. public void assertFormNotificationMsgContainsLink(final String linkExactText) {
  84. final Locator linksInErrorMsg = locators.css(AUI_MESSAGE_INFO_CSS + " a");
  85. if (!nodeWithTextExists(linkExactText, linksInErrorMsg)) {
  86. fail("Link with text '" + linkExactText + "' not found in any notification message");
  87. }
  88. }
  89. @Override
  90. public void assertFormSuccessMsg(final String expectedText) {
  91. final Locator notification = createFormSuccessMessageLocator();
  92. textAssertions.assertTextPresent(notification, expectedText);
  93. }
  94. @Override
  95. public void assertFormWarningMessage(final String messageText) {
  96. textAssertions.assertTextPresent(createFormWarningMessageLocator(), messageText);
  97. }
  98. @Override
  99. public void assertNoFormWarningMessage(final String notExpectedText) {
  100. textAssertions.assertTextNotPresent(createFormWarningMessageLocator(), notExpectedText);
  101. }
  102. public void assertFormWarningMessageContainsLink(final String linkExactText) {
  103. final Locator linksInMsg = locators.css(AUI_MESSAGE_WARNING_CSS + " a");
  104. if (!nodeWithTextExists(linkExactText, linksInMsg)) {
  105. fail("Link with text '" + linkExactText + "' not found in any warning message");
  106. }
  107. }
  108. @Override
  109. public void assertSelectElementHasOptionSelected(final String selectElementName, final String optionName) {
  110. final String actual = tester.getDialog().getSelectedOption(selectElementName);
  111. Assert.assertEquals(
  112. "Expected option selected '" + optionName + "' was not selected in form element '" + selectElementName + "'. Actual selected option was '" + actual + "'.",
  113. optionName, actual);
  114. }
  115. @Override
  116. public void assertSelectElementByIdHasOptionSelected(final String selectElementId, final String optionName) {
  117. final List<String> selectedOptionIds = Arrays.asList(tester.getDialog().getForm().getParameterValues(selectElementId));
  118. final String[] optionValues = tester.getDialog().getOptionsFor(selectElementId);//display names
  119. for (int i = 0; i < optionValues.length; i++) {
  120. final String optionValue = optionValues[i];
  121. if (optionValue.equals(optionName)) {
  122. final String expectedValueId = tester.getDialog().getOptionValuesFor(selectElementId)[i];
  123. assertTrue("Expected option '" + optionName + "' for element '" + selectElementId + "' was not selected", selectedOptionIds.contains(expectedValueId));
  124. return;
  125. }
  126. }
  127. fail("Expected option value: '" + optionName + "' is not a selected value option for '" + selectElementId + "'");
  128. }
  129. @Override
  130. public void assertSelectElementByIdHasOptionSelectedById(final String selectElementId, final String optionId) {
  131. final List<String> selectedOptionIds = Arrays.asList(tester.getDialog().getForm().getParameterValues(selectElementId));
  132. assertTrue("Expected selected option '" + optionId + "' for element '" + selectElementId + "'.", selectedOptionIds.contains(optionId));
  133. }
  134. private Locator createFieldErrorMessageLocator() {
  135. return new XPathLocator(tester, "//span[@class='errMsg']");
  136. }
  137. private Locator createAuiFieldErrorMessageLocator() {
  138. return new XPathLocator(tester, "//form[@class='aui']//div[@class='field-group']/div[@class='error']");
  139. }
  140. private Locator createFormErrorMessageLocator() {
  141. return locators.css(AUI_MESSAGE_ERROR_CSS);
  142. }
  143. private Locator createFormNotificationMessageLocator() {
  144. return locators.css(AUI_MESSAGE_INFO_CSS);
  145. }
  146. private Locator createFormSuccessMessageLocator() {
  147. return locators.css(".aui-message.success");
  148. }
  149. private Locator createFormWarningMessageLocator() {
  150. return locators.css(AUI_MESSAGE_WARNING_CSS);
  151. }
  152. }