You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ErrorLevelsTest.java 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.vaadin.tests.components;
  2. import static org.junit.Assert.assertTrue;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collection;
  6. import java.util.List;
  7. import java.util.Locale;
  8. import org.junit.Test;
  9. import org.openqa.selenium.Keys;
  10. import org.openqa.selenium.WebElement;
  11. import com.vaadin.client.StyleConstants;
  12. import com.vaadin.shared.ui.ErrorLevel;
  13. import com.vaadin.testbench.By;
  14. import com.vaadin.testbench.elements.AccordionElement;
  15. import com.vaadin.testbench.elements.ButtonElement;
  16. import com.vaadin.testbench.elements.CheckBoxElement;
  17. import com.vaadin.testbench.elements.ComboBoxElement;
  18. import com.vaadin.testbench.elements.DateFieldElement;
  19. import com.vaadin.testbench.elements.FormLayoutElement;
  20. import com.vaadin.testbench.elements.LinkElement;
  21. import com.vaadin.testbench.elements.NativeButtonElement;
  22. import com.vaadin.testbench.elements.PanelElement;
  23. import com.vaadin.testbench.elements.TabSheetElement;
  24. import com.vaadin.testbench.elements.TwinColSelectElement;
  25. import com.vaadin.testbench.parallel.BrowserUtil;
  26. import com.vaadin.tests.tb3.SingleBrowserTest;
  27. public class ErrorLevelsTest extends SingleBrowserTest {
  28. private ComboBoxElement errorLevelSelector;
  29. @Override
  30. public void setup() throws Exception {
  31. super.setup();
  32. openTestURL();
  33. errorLevelSelector = $(ComboBoxElement.class).first();
  34. }
  35. @Test
  36. public void testErrorIndicatorsClassName() {
  37. ErrorLevel errorLevel = ErrorLevel.WARNING;
  38. selectErrorLevel(errorLevel);
  39. List<WebElement> errorIndicators = findElements(
  40. By.className(StyleConstants.STYLE_NAME_ERROR_INDICATOR));
  41. for (WebElement errorIndicator : errorIndicators) {
  42. assertHasRightClassNames(errorIndicator,
  43. StyleConstants.STYLE_NAME_ERROR_INDICATOR, errorLevel);
  44. }
  45. }
  46. @Test
  47. public void testComponentsClassName() {
  48. ErrorLevel errorLevel = ErrorLevel.WARNING;
  49. selectErrorLevel(errorLevel);
  50. // Button
  51. ButtonElement buttonElement = $(ButtonElement.class).first();
  52. assertHasRightClassNames(buttonElement, "v-button-error", errorLevel);
  53. // Native button
  54. NativeButtonElement nativeButtonElement = $(NativeButtonElement.class)
  55. .first();
  56. assertHasRightClassNames(nativeButtonElement, "v-nativebutton-error",
  57. errorLevel);
  58. // Link
  59. LinkElement linkElement = $(LinkElement.class).first();
  60. assertHasRightClassNames(linkElement, "v-link-error", errorLevel);
  61. // Combo box
  62. ComboBoxElement comboBoxElement = $(ComboBoxElement.class).get(1);
  63. assertHasRightClassNames(comboBoxElement, "v-filterselect-error",
  64. errorLevel);
  65. // Date field
  66. DateFieldElement dateFieldElement = $(DateFieldElement.class).first();
  67. assertHasRightClassNames(dateFieldElement, "v-datefield-error",
  68. errorLevel);
  69. // Checkbox
  70. CheckBoxElement checkBoxElement = $(CheckBoxElement.class).first();
  71. assertHasRightClassNames(checkBoxElement, "v-checkbox-error",
  72. errorLevel);
  73. // Tab sheet
  74. TabSheetElement tabSheetElement = $(TabSheetElement.class).first();
  75. assertHasRightClassNames(tabSheetElement, "v-tabsheet-error",
  76. errorLevel);
  77. // Accordion
  78. AccordionElement accordionElement = $(AccordionElement.class).first();
  79. assertHasRightClassNames(accordionElement, "v-accordion-error",
  80. errorLevel);
  81. // Form layout
  82. FormLayoutElement formLayoutElement = $(FormLayoutElement.class)
  83. .first();
  84. assertHasRightClassNames(formLayoutElement, "v-formlayout-error",
  85. errorLevel);
  86. // Panel
  87. PanelElement panelElement = $(PanelElement.class).first();
  88. assertHasRightClassNames(panelElement, "v-panel-error", errorLevel);
  89. // Twin col select
  90. TwinColSelectElement twinColSelectElement = $(
  91. TwinColSelectElement.class).first();
  92. assertHasRightClassNames(twinColSelectElement, "v-select-twincol-error",
  93. errorLevel);
  94. }
  95. private void assertHasRightClassNames(WebElement element, String prefix,
  96. ErrorLevel errorLevel) {
  97. assertTrue("Element must have only one error level class name",
  98. containsCorrectErrorLevelClassNameOnly(element, prefix,
  99. errorLevel));
  100. }
  101. private boolean containsCorrectErrorLevelClassNameOnly(WebElement element,
  102. String prefix, ErrorLevel errorLevel) {
  103. List<String> classNames = new ArrayList<String>(
  104. Arrays.asList(element.getAttribute("class").split(" ")));
  105. classNames.retainAll(getErrorLevelClassNames(prefix,
  106. Arrays.asList(ErrorLevel.values())));
  107. return classNames.size() == 1 && classNames
  108. .contains(getErrorLevelClassName(prefix, errorLevel));
  109. }
  110. private String getErrorLevelClassName(String prefix,
  111. ErrorLevel errorLevel) {
  112. return prefix + "-" + errorLevel.toString().toLowerCase(Locale.ROOT);
  113. }
  114. private List<String> getErrorLevelClassNames(String prefix,
  115. Collection<ErrorLevel> errorLevels) {
  116. List<String> classNames = new ArrayList<String>(errorLevels.size());
  117. for (ErrorLevel errorLevel : errorLevels) {
  118. classNames.add(getErrorLevelClassName(prefix, errorLevel));
  119. }
  120. return classNames;
  121. }
  122. private void selectErrorLevel(ErrorLevel errorLevel) {
  123. errorLevelSelector
  124. .selectByText(errorLevel.toString().toUpperCase(Locale.ROOT));
  125. }
  126. }