123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package com.vaadin.tests.components.grid;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertTrue;
-
- import org.junit.Test;
- import org.openqa.selenium.By;
- import org.openqa.selenium.Dimension;
- import org.openqa.selenium.Keys;
- import org.openqa.selenium.interactions.Actions;
-
- import com.vaadin.testbench.elements.ButtonElement;
- import com.vaadin.testbench.elements.GridElement;
- import com.vaadin.testbench.elements.GridElement.GridCellElement;
- import com.vaadin.testbench.elements.LabelElement;
- import com.vaadin.testbench.elements.TextFieldElement;
- import com.vaadin.tests.tb3.MultiBrowserTest;
-
- public class GridColumnResizingTest extends MultiBrowserTest {
-
- @Test
- public void serverSetWidth() {
- openTestURL();
-
- serverSideSetWidth(50);
- assertColumnWidth(50, 0);
-
- serverSideSetWidth(500);
- assertColumnWidth(500, 0);
- }
-
- @Test
- public void setResizable() {
- openTestURL();
- ButtonElement toggleResizableButton = $(ButtonElement.class).get(4);
- GridCellElement cell = getGrid().getHeaderCell(0, 0);
-
- assertEquals(true, cell.isElementPresent(
- By.cssSelector("div.v-grid-column-resize-handle")));
-
- toggleResizableButton.click();
- assertEquals(false, cell.isElementPresent(
- By.cssSelector("div.v-grid-column-resize-handle")));
- }
-
- @Test
- public void setExpandRatio() {
- openTestURL();
- ButtonElement setExpandRatioButton = $(ButtonElement.class).get(1);
-
- setExpandRatioButton.click();
- assertColumnWidthWithThreshold(375, 0, 2);
- assertColumnWidthWithThreshold(125, 1, 2);
- }
-
- @Test
- public void setMinimumWidth() {
- openTestURL();
-
- setMinWidth(100);
- serverSideSetWidth(50);
- assertColumnWidth(100, 0);
-
- serverSideSetWidth(150);
- dragResizeColumn(0, 0, -100);
- assertColumnWidth(100, 0);
- }
-
- @Test
- public void setMaximumWidth() {
- openTestURL();
-
- serverSideSetWidth(50);
- setMaxWidth(100);
-
- serverSideSetWidth(150);
- assertColumnWidth(100, 0);
-
- // TODO add the following when grid column width recalculation has been
- // fixed in the case where the sum of column widths exceeds the visible
- // area
-
- // serverSideSetWidth(50);
- // dragResizeColumn(0, 0, 200);
- // assertColumnWidth(100, 0);
- }
-
- @Test
- public void resizeEventListener() {
- openTestURL();
-
- assertEquals("not resized", $(LabelElement.class).get(1).getText());
-
- serverSideSetWidth(150);
- assertEquals("server resized", $(LabelElement.class).get(1).getText());
-
- dragResizeColumn(0, 0, 100);
- assertEquals("client resized", $(LabelElement.class).get(1).getText());
- }
-
- private GridElement getGrid() {
- return $(GridElement.class).first();
- }
-
- private void serverSideSetWidth(double width) {
- TextFieldElement textField = $(TextFieldElement.class).first();
- ButtonElement setWidthButton = $(ButtonElement.class).get(0);
- textField.clear();
- textField.sendKeys(String.valueOf(width), Keys.ENTER);
- setWidthButton.click();
- }
-
- private void setMinWidth(double minWidth) {
- TextFieldElement textField = $(TextFieldElement.class).first();
- ButtonElement setMinWidthButton = $(ButtonElement.class).get(2);
- textField.clear();
- textField.sendKeys(String.valueOf(minWidth), Keys.ENTER);
- setMinWidthButton.click();
- }
-
- private void setMaxWidth(double maxWidth) {
- TextFieldElement textField = $(TextFieldElement.class).first();
- ButtonElement setMaxWidthButton = $(ButtonElement.class).get(3);
- textField.clear();
- textField.sendKeys(String.valueOf(maxWidth), Keys.ENTER);
- setMaxWidthButton.click();
- }
-
- private void dragResizeColumn(int columnIndex, int posX, int offset) {
- GridCellElement headerCell = getGrid().getHeaderCell(0, columnIndex);
- Dimension size = headerCell.getSize();
- new Actions(getDriver())
- .moveToElement(headerCell,
- getXOffset(headerCell, size.getWidth() + posX),
- getYOffset(headerCell, size.getHeight() / 2))
- .clickAndHold().moveByOffset(offset, 0).release().perform();
- }
-
- private void assertColumnWidth(int width, int columnIndex) {
- assertEquals(width,
- getGrid().getCell(0, columnIndex).getSize().getWidth());
- }
-
- private void assertColumnWidthWithThreshold(int width, int columnIndex,
- int threshold) {
- assertTrue(
- Math.abs(getGrid().getCell(0, columnIndex).getSize().getWidth()
- - width) <= threshold);
- }
- }
|