Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

FooterTest.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package com.vaadin.tests.components.table;
  2. import static org.junit.Assert.assertEquals;
  3. import java.io.IOException;
  4. import org.junit.Test;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.support.ui.ExpectedCondition;
  8. import com.vaadin.testbench.TestBenchElement;
  9. import com.vaadin.testbench.elements.TableElement;
  10. import com.vaadin.testbench.elements.ButtonElement;
  11. import com.vaadin.testbench.elements.CheckBoxElement;
  12. import com.vaadin.testbench.elements.TextFieldElement;
  13. import com.vaadin.tests.tb3.MultiBrowserTest;
  14. /**
  15. * Tests Table Footer
  16. *
  17. * @author Vaadin Ltd
  18. */
  19. public class FooterTest extends MultiBrowserTest {
  20. @Test
  21. public void testFooter() throws IOException {
  22. openTestURL();
  23. waitForElementPresent(By.className("v-table"));
  24. compareScreen("initial");
  25. TableElement table = $(TableElement.class).first();
  26. TestBenchElement footer1 = table.getFooterCell(0);
  27. TestBenchElement footer2 = table.getFooterCell(1);
  28. TestBenchElement footer3 = table.getFooterCell(2);
  29. assertEquals("Footer1", footer1.getText());
  30. assertEquals("Footer2", footer2.getText());
  31. assertEquals("Footer3", footer3.getText());
  32. CheckBoxElement checkBox = $(CheckBoxElement.class).first();
  33. checkBox.click();
  34. compareScreen("no-footer");
  35. checkBox.click();
  36. compareScreen("footer-col1-col2-col3-a");
  37. table = $(TableElement.class).first();
  38. footer1 = table.getFooterCell(0);
  39. footer2 = table.getFooterCell(1);
  40. footer3 = table.getFooterCell(2);
  41. assertEquals("Footer1", footer1.getText());
  42. assertEquals("Footer2", footer2.getText());
  43. assertEquals("Footer3", footer3.getText());
  44. // open table column selector menu
  45. table.findElement(By.className("v-table-column-selector")).click();
  46. // hide col2
  47. findElements(By.className("gwt-MenuItem")).get(1).click();
  48. compareScreen("footer-col1-col3");
  49. // open table column selector menu
  50. table.findElement(By.className("v-table-column-selector")).click();
  51. // show col2
  52. findElements(By.className("gwt-MenuItem")).get(1).click();
  53. compareScreen("footer-col1-col2-col3-b");
  54. TextFieldElement tf = $(TextFieldElement.class).first();
  55. tf.clear();
  56. waitUntiltextFieldIsChangedTo(tf, "");
  57. tf.sendKeys("fuu");
  58. waitUntiltextFieldIsChangedTo(tf, "fuu");
  59. ButtonElement button = $(ButtonElement.class).first();
  60. button.click();
  61. table = $(TableElement.class).first();
  62. footer1 = table.getFooterCell(0);
  63. assertEquals("fuu", footer1.getText());
  64. tf = $(TextFieldElement.class).get(1);
  65. tf.clear();
  66. waitUntiltextFieldIsChangedTo(tf, "");
  67. tf.sendKeys("bar");
  68. waitUntiltextFieldIsChangedTo(tf, "bar");
  69. button = $(ButtonElement.class).get(1);
  70. button.click();
  71. table = $(TableElement.class).first();
  72. footer2 = table.getFooterCell(1);
  73. assertEquals("bar", footer2.getText());
  74. tf = $(TextFieldElement.class).get(2);
  75. tf.clear();
  76. waitUntiltextFieldIsChangedTo(tf, "");
  77. button = $(ButtonElement.class).get(2);
  78. button.click();
  79. table = $(TableElement.class).first();
  80. footer3 = table.getFooterCell(2);
  81. assertEquals("", footer3.getText().trim());
  82. TextFieldElement tf1 = $(TextFieldElement.class).first();
  83. tf1.clear();
  84. waitUntiltextFieldIsChangedTo(tf1, "");
  85. tf1.sendKeys("Footer1");
  86. waitUntiltextFieldIsChangedTo(tf1, "Footer1");
  87. TextFieldElement tf2 = $(TextFieldElement.class).get(1);
  88. tf2.clear();
  89. waitUntiltextFieldIsChangedTo(tf2, "");
  90. tf2.sendKeys("Footer2");
  91. waitUntiltextFieldIsChangedTo(tf2, "Footer2");
  92. TextFieldElement tf3 = $(TextFieldElement.class).get(2);
  93. tf3.clear();
  94. waitUntiltextFieldIsChangedTo(tf3, "");
  95. tf3.sendKeys("Footer3");
  96. waitUntiltextFieldIsChangedTo(tf3, "Footer3");
  97. button = $(ButtonElement.class).first();
  98. button.click();
  99. button = $(ButtonElement.class).get(1);
  100. button.click();
  101. button = $(ButtonElement.class).get(2);
  102. button.click();
  103. waitUntilFooterCellIsChangedTo(0, "Footer1");
  104. waitUntilFooterCellIsChangedTo(1, "Footer2");
  105. waitUntilFooterCellIsChangedTo(2, "Footer3");
  106. table = $(TableElement.class).first();
  107. footer1 = table.getFooterCell(0);
  108. assertEquals("Footer1", footer1.getText());
  109. compareScreen("footer-col1-col2-col3-c");
  110. }
  111. private void waitUntiltextFieldIsChangedTo(final TextFieldElement tf,
  112. final String text) {
  113. waitUntil(new ExpectedCondition<Boolean>() {
  114. @Override
  115. public Boolean apply(WebDriver input) {
  116. return text.equals(tf.getValue());
  117. }
  118. @Override
  119. public String toString() {
  120. // Timed out after 10 seconds waiting for ...
  121. return String.format("textfields value was '%s'",
  122. "" + tf.getText());
  123. }
  124. });
  125. }
  126. private void waitUntilFooterCellIsChangedTo(final int cell,
  127. final String footer) {
  128. final TestBenchElement footerCell = $(TableElement.class).first()
  129. .getFooterCell(cell);
  130. waitUntil(new ExpectedCondition<Boolean>() {
  131. @Override
  132. public Boolean apply(WebDriver input) {
  133. return footer.equals(footerCell.getText());
  134. }
  135. @Override
  136. public String toString() {
  137. // Timed out after 10 seconds waiting for ...
  138. return String.format("footer cell %s's text was'%s'", "" + cell,
  139. footerCell.getText());
  140. }
  141. });
  142. }
  143. }