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.

BasicPersonFormTest.java 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.vaadin.tests.fieldgroup;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertTrue;
  4. import com.vaadin.testbench.TestBenchElement;
  5. import com.vaadin.testbench.elements.ButtonElement;
  6. import com.vaadin.testbench.elements.CheckBoxElement;
  7. import com.vaadin.testbench.elements.NotificationElement;
  8. import com.vaadin.testbench.elements.TableElement;
  9. import com.vaadin.testbench.elements.TableRowElement;
  10. import com.vaadin.testbench.elements.TextAreaElement;
  11. import com.vaadin.testbench.elements.TextFieldElement;
  12. import com.vaadin.testbench.parallel.BrowserUtil;
  13. import com.vaadin.tests.data.bean.Sex;
  14. import com.vaadin.tests.tb3.AbstractTB3Test;
  15. import com.vaadin.tests.tb3.MultiBrowserTest;
  16. import com.vaadin.tests.tb3.PrivateTB3Configuration;
  17. public abstract class BasicPersonFormTest extends MultiBrowserTest {
  18. private static final String BEAN_VALUES = "Person [firstName=John, lastName=Doe, email=john@doe.com, age=64, sex=Male, address=Address [streetAddress=John street, postalCode=11223, city=John's town, country=USA], deceased=false, salary=null, salaryDouble=null, rent=null]";
  19. private int logCounter;
  20. @Override
  21. public void setup() throws Exception {
  22. super.setup();
  23. logCounter = 0;
  24. if (BrowserUtil.isFirefox(getDesiredCapabilities())) {
  25. // Use larger view port to make sure everything is visible.
  26. testBench().resizeViewPortTo(1500, 1500);
  27. }
  28. }
  29. @Override
  30. protected Class<?> getUIClass() {
  31. return BasicPersonForm.class;
  32. }
  33. protected TextFieldElement getFirstNameField() {
  34. return $(TextFieldElement.class).caption("First Name").first();
  35. }
  36. protected TextAreaElement getLastNameArea() {
  37. return $(TextAreaElement.class).caption("Last Name").first();
  38. }
  39. protected TextFieldElement getEmailField() {
  40. return $(TextFieldElement.class).caption("Email").first();
  41. }
  42. protected TextFieldElement getAgeField() {
  43. return $(TextFieldElement.class).caption("Age").first();
  44. }
  45. protected TableElement getGenderTable() {
  46. return $(TableElement.class).caption("Sex").first();
  47. }
  48. protected TextFieldElement getDeceasedField() {
  49. return $(TextFieldElement.class).caption("Deceased").first();
  50. }
  51. protected void showBeanValues() {
  52. $(ButtonElement.class).caption("Show bean values").first().click();
  53. }
  54. protected CheckBoxElement getPreCommitFailsCheckBox() {
  55. return $(CheckBoxElement.class).get(1);
  56. }
  57. protected void commitChanges() {
  58. $(ButtonElement.class).caption("Commit").first().click();
  59. }
  60. protected void closeNotification() {
  61. $(NotificationElement.class).first().close();
  62. }
  63. protected CheckBoxElement getPostCommitFailsCheckBox() {
  64. return $(CheckBoxElement.class).get(0);
  65. }
  66. protected void discardChanges() {
  67. $(ButtonElement.class).caption("Discard").first().click();
  68. }
  69. protected void assertFirstNameValue(String expected) {
  70. assertFieldValue("First Name", expected, getFirstNameField());
  71. }
  72. protected void assertLastNameValue(String expected) {
  73. assertFieldValue("Last Name", expected, getLastNameArea());
  74. }
  75. protected void assertEmailValue(String expected) {
  76. assertFieldValue("Email", expected, getEmailField());
  77. }
  78. protected void assertAgeValue(String expected) {
  79. assertFieldValue("Age", expected, getAgeField());
  80. }
  81. protected void assertDeceasedValue(String expected) {
  82. assertFieldValue("Deceased", expected, getDeceasedField());
  83. }
  84. private void assertFieldValue(String caption, String expected,
  85. TestBenchElement field) {
  86. assertEquals(String.format("Unexpected value for field '%s',", caption),
  87. expected, field.getAttribute("value"));
  88. }
  89. protected void assertSelectedSex(Sex sex) {
  90. TableRowElement row = getGenderTable().getRow(getIndex(sex));
  91. assertTrue(
  92. String.format("Given sex (%s) isn't selected.",
  93. sex.getStringRepresentation()),
  94. hasCssClass(row, "v-selected"));
  95. }
  96. private int getIndex(Sex sex) {
  97. switch (sex) {
  98. case MALE:
  99. return 0;
  100. case FEMALE:
  101. return 1;
  102. default:
  103. return 2;
  104. }
  105. }
  106. protected void assertBeanValuesUnchanged() {
  107. showBeanValues();
  108. assertLogText(BEAN_VALUES);
  109. }
  110. protected void assertCommitFails() {
  111. commitChanges();
  112. closeNotification();
  113. assertLogText("Commit failed: Commit failed");
  114. }
  115. protected void assertCommitSuccessful() {
  116. commitChanges();
  117. closeNotification();
  118. assertLogText("Commit succesful");
  119. }
  120. protected void assertDiscardResetsFields() {
  121. discardChanges();
  122. assertLogText("Discarded changes");
  123. assertDefaults();
  124. }
  125. protected void assertLogText(String expected) {
  126. ++logCounter;
  127. assertEquals("Unexpected log contents,", logCounter + ". " + expected,
  128. getLogRow(0));
  129. }
  130. protected void assertDefaults() {
  131. assertFirstNameValue("John");
  132. assertLastNameValue("Doe");
  133. assertEmailValue("john@doe.com");
  134. assertAgeValue("64");
  135. assertSelectedSex(Sex.MALE);
  136. assertDeceasedValue("NAAAAAH");
  137. }
  138. }