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.

GridColumnResizingTest.java 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.vaadin.tests.components.grid;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertTrue;
  4. import org.junit.Test;
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.Dimension;
  7. import org.openqa.selenium.Keys;
  8. import org.openqa.selenium.interactions.Actions;
  9. import com.vaadin.testbench.elements.ButtonElement;
  10. import com.vaadin.testbench.elements.GridElement;
  11. import com.vaadin.testbench.elements.GridElement.GridCellElement;
  12. import com.vaadin.testbench.elements.LabelElement;
  13. import com.vaadin.testbench.elements.TextFieldElement;
  14. import com.vaadin.tests.tb3.MultiBrowserTest;
  15. public class GridColumnResizingTest extends MultiBrowserTest {
  16. @Test
  17. public void serverSetWidth() {
  18. openTestURL();
  19. serverSideSetWidth(50);
  20. assertColumnWidth(50, 0);
  21. serverSideSetWidth(500);
  22. assertColumnWidth(500, 0);
  23. }
  24. @Test
  25. public void setResizable() {
  26. openTestURL();
  27. ButtonElement toggleResizableButton = $(ButtonElement.class).get(4);
  28. GridCellElement cell = getGrid().getHeaderCell(0, 0);
  29. assertEquals(true, cell.isElementPresent(
  30. By.cssSelector("div.v-grid-column-resize-handle")));
  31. toggleResizableButton.click();
  32. assertEquals(false, cell.isElementPresent(
  33. By.cssSelector("div.v-grid-column-resize-handle")));
  34. }
  35. @Test
  36. public void setExpandRatio() {
  37. openTestURL();
  38. ButtonElement setExpandRatioButton = $(ButtonElement.class).get(1);
  39. setExpandRatioButton.click();
  40. assertColumnWidthWithThreshold(375, 0, 2);
  41. assertColumnWidthWithThreshold(125, 1, 2);
  42. }
  43. @Test
  44. public void setMinimumWidth() {
  45. openTestURL();
  46. setMinWidth(100);
  47. serverSideSetWidth(50);
  48. assertColumnWidth(100, 0);
  49. serverSideSetWidth(150);
  50. dragResizeColumn(0, 0, -100);
  51. assertColumnWidth(100, 0);
  52. }
  53. @Test
  54. public void setMaximumWidth() {
  55. openTestURL();
  56. serverSideSetWidth(50);
  57. setMaxWidth(100);
  58. serverSideSetWidth(150);
  59. assertColumnWidth(100, 0);
  60. // TODO add the following when grid column width recalculation has been
  61. // fixed in the case where the sum of column widths exceeds the visible
  62. // area
  63. // serverSideSetWidth(50);
  64. // dragResizeColumn(0, 0, 200);
  65. // assertColumnWidth(100, 0);
  66. }
  67. @Test
  68. public void resizeEventListener() {
  69. openTestURL();
  70. assertEquals("not resized", $(LabelElement.class).get(1).getText());
  71. serverSideSetWidth(150);
  72. assertEquals("server resized", $(LabelElement.class).get(1).getText());
  73. dragResizeColumn(0, 0, 100);
  74. assertEquals("client resized", $(LabelElement.class).get(1).getText());
  75. }
  76. private GridElement getGrid() {
  77. return $(GridElement.class).first();
  78. }
  79. private void serverSideSetWidth(double width) {
  80. TextFieldElement textField = $(TextFieldElement.class).first();
  81. ButtonElement setWidthButton = $(ButtonElement.class).get(0);
  82. textField.clear();
  83. textField.sendKeys(String.valueOf(width), Keys.ENTER);
  84. setWidthButton.click();
  85. }
  86. private void setMinWidth(double minWidth) {
  87. TextFieldElement textField = $(TextFieldElement.class).first();
  88. ButtonElement setMinWidthButton = $(ButtonElement.class).get(2);
  89. textField.clear();
  90. textField.sendKeys(String.valueOf(minWidth), Keys.ENTER);
  91. setMinWidthButton.click();
  92. }
  93. private void setMaxWidth(double maxWidth) {
  94. TextFieldElement textField = $(TextFieldElement.class).first();
  95. ButtonElement setMaxWidthButton = $(ButtonElement.class).get(3);
  96. textField.clear();
  97. textField.sendKeys(String.valueOf(maxWidth), Keys.ENTER);
  98. setMaxWidthButton.click();
  99. }
  100. private void dragResizeColumn(int columnIndex, int posX, int offset) {
  101. GridCellElement headerCell = getGrid().getHeaderCell(0, columnIndex);
  102. Dimension size = headerCell.getSize();
  103. new Actions(getDriver())
  104. .moveToElement(headerCell,
  105. getXOffset(headerCell, size.getWidth() + posX),
  106. getYOffset(headerCell, size.getHeight() / 2))
  107. .clickAndHold().moveByOffset(offset, 0).release().perform();
  108. }
  109. private void assertColumnWidth(int width, int columnIndex) {
  110. assertEquals(width,
  111. getGrid().getCell(0, columnIndex).getSize().getWidth());
  112. }
  113. private void assertColumnWidthWithThreshold(int width, int columnIndex,
  114. int threshold) {
  115. assertTrue(
  116. Math.abs(getGrid().getCell(0, columnIndex).getSize().getWidth()
  117. - width) <= threshold);
  118. }
  119. }