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.

BasicCrudGridEditorRowTest.java 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.vaadin.tests.fieldgroup;
  2. import java.util.Locale;
  3. import org.junit.Before;
  4. import org.junit.Test;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.Keys;
  7. import org.openqa.selenium.WebElement;
  8. import org.openqa.selenium.interactions.Actions;
  9. import com.vaadin.testbench.elements.CheckBoxElement;
  10. import com.vaadin.testbench.elements.DateFieldElement;
  11. import com.vaadin.testbench.elements.GridElement;
  12. import com.vaadin.testbench.elements.GridElement.GridCellElement;
  13. import com.vaadin.testbench.elements.GridElement.GridEditorElement;
  14. import com.vaadin.testbench.parallel.TestCategory;
  15. import com.vaadin.tests.tb3.MultiBrowserTest;
  16. import static org.junit.Assert.assertEquals;
  17. import static org.junit.Assert.assertFalse;
  18. import static org.junit.Assert.assertNotEquals;
  19. import static org.junit.Assert.assertTrue;
  20. @TestCategory("grid")
  21. public class BasicCrudGridEditorRowTest extends MultiBrowserTest {
  22. private GridElement grid;
  23. @Before
  24. public void openTest() {
  25. openTestURL();
  26. grid = $(GridElement.class).first();
  27. }
  28. @Test
  29. public void lookAndFeel() throws Exception {
  30. GridCellElement ritaBirthdate = grid.getCell(2, 3);
  31. waitUntilLoadingIndicatorNotVisible();
  32. assertEquals("May 16, 1992",ritaBirthdate.getText());
  33. // Grid Editor should not present yet
  34. waitForElementNotPresent(By.className("v-grid-editor"));
  35. // Open editor row
  36. new Actions(getDriver()).doubleClick(ritaBirthdate).perform();
  37. sleep(200);
  38. // Compound class name is not allowed to use here,
  39. // check the v-grid-editor class only in this case.
  40. waitForElementPresent(By.className("v-grid-editor"));
  41. }
  42. @Test
  43. public void editorRowOneInvalidValue() throws Exception {
  44. GridCellElement ritaBirthdate = grid.getCell(2, 3);
  45. // Open editor row
  46. new Actions(getDriver()).doubleClick(ritaBirthdate).perform();
  47. GridEditorElement editor = grid.getEditor();
  48. DateFieldElement dateField = editor.$(DateFieldElement.class).first();
  49. WebElement input = dateField.findElement(By.xpath("input"));
  50. // input.click();
  51. input.sendKeys("Invalid", Keys.TAB);
  52. editor.save();
  53. assertTrue("Editor wasn't displayed.", editor.isDisplayed());
  54. assertTrue("DateField wasn't displayed.", dateField.isDisplayed());
  55. assertTrue("DateField didn't have 'v-invalid' css class.",
  56. hasCssClass(dateField, "v-datefield-error"));
  57. }
  58. @Test
  59. public void testCheckboxInEditorWorks() {
  60. GridCellElement ritaBirthdate = grid.getCell(2, 3);
  61. // Open editor row
  62. new Actions(getDriver()).doubleClick(ritaBirthdate).perform();
  63. // Get CheckBox
  64. GridEditorElement editor = grid.getEditor();
  65. CheckBoxElement cb = editor.getField(5).wrap(CheckBoxElement.class);
  66. // Check values
  67. String value = cb.getValue();
  68. cb.click(5, 5);
  69. assertNotEquals("Checkbox value did not change", value, cb.getValue());
  70. }
  71. @Test
  72. public void testNoTopStyleSetOnEditorOpenWithFooterOnTop() {
  73. GridCellElement cell = grid.getCell(2, 3);
  74. // Open editor row
  75. new Actions(getDriver()).doubleClick(cell).perform();
  76. // Close editor
  77. new Actions(getDriver()).sendKeys(Keys.ESCAPE).perform();
  78. cell = grid.getCell(14, 3);
  79. // Open editor row
  80. new Actions(getDriver()).doubleClick(cell).perform();
  81. String attribute = grid.getEditor().getAttribute("style")
  82. .toLowerCase(Locale.ROOT);
  83. assertFalse("Style should not contain top.",
  84. attribute.contains("top:"));
  85. }
  86. }