123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package com.vaadin.tests.components.grid;
-
- import com.vaadin.testbench.elements.ButtonElement;
- import com.vaadin.testbench.elements.GridElement;
- import com.vaadin.testbench.elements.TextFieldElement;
- import com.vaadin.testbench.parallel.TestCategory;
- import com.vaadin.tests.tb3.MultiBrowserTest;
- import org.junit.Assert;
- import org.junit.Test;
- import org.openqa.selenium.Keys;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.interactions.Actions;
-
- import static org.junit.Assert.fail;
-
- /**
- * Makes sure that pressing Tab when the Grid is in edit mode will make focus
- * skip cells that are not editable.
- */
- @TestCategory("grid")
- public class GridEditorTabSkipsNonEditableCellsTest extends MultiBrowserTest {
- /**
- * The grid with 5 columns. First, third and fifth columns are not editable.
- */
- private GridElement grid;
-
- @Override
- public void setup() throws Exception {
- super.setup();
- openTestURL();
- grid = $(GridElement.class).first();
- }
-
- @Test
- public void tabSkipsOverNotEditableFieldBuffered() {
- setBuffered(true);
- openEditor(0, 1);
- pressTab();
- Assert.assertEquals("col3_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void tabDoesNothingIfAlreadyOnLastEditableFieldBuffered() {
- setBuffered(true);
- openEditor(0, 3);
- pressTab();
- Assert.assertEquals("col3_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void tabSkipsOverNotEditableFieldUnbuffered() {
- setBuffered(false);
- openEditor(0, 1);
- pressTab();
- Assert.assertEquals("col3_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void tabMovesToNextRowFirstEditableFieldUnbuffered() {
- setBuffered(false);
- openEditor(0, 3);
- pressTab();
- Assert.assertEquals("col1_1", getFocusedEditorCellContents());
- }
-
- @Test
- public void shiftTabSkipsOverNotEditableFieldBuffered() {
- setBuffered(true);
- openEditor(0, 3);
- pressShiftTab();
- Assert.assertEquals("col1_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void shiftTabDoesNothingIfAlreadyOnLastEditableFieldBuffered() {
- setBuffered(true);
- openEditor(0, 1);
- pressShiftTab();
- Assert.assertEquals("col1_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void shiftTabSkipsOverNotEditableFieldUnbuffered() {
- setBuffered(false);
- openEditor(0, 3);
- pressShiftTab();
- Assert.assertEquals("col1_0", getFocusedEditorCellContents());
- }
-
- @Test
- public void shiftTabMovesToNextRowFirstEditableFieldUnbuffered() {
- setBuffered(false);
- openEditor(1, 1);
- pressShiftTab();
- Assert.assertEquals("col3_0", getFocusedEditorCellContents());
- }
-
- private void openEditor(int rowIndex, int colIndex) {
- grid.getCell(rowIndex, colIndex).doubleClick();
- }
-
- private void pressTab() {
- new Actions(getDriver()).sendKeys(Keys.TAB).perform();
- }
-
- private void pressShiftTab() {
- new Actions(getDriver()).keyDown(Keys.SHIFT).sendKeys(Keys.TAB)
- .keyUp(Keys.SHIFT).perform();
- }
-
- private void setBuffered(boolean buffered) {
- $(ButtonElement.class).caption(buffered ? "Set Editor Buffered Mode On"
- : "Set Editor Buffered Mode Off").first().click();
- }
-
- private String getFocusedEditorCellContents() {
- final GridElement.GridEditorElement editor = grid.getEditor();
- final WebElement focusedElement = getFocusedElement();
- for (int i = 0; i < 5; i++) {
- if (editor.isEditable(i)
- && editor.getField(i).equals(focusedElement)) {
- return (editor.getField(i).wrap(TextFieldElement.class))
- .getValue();
- }
- }
- fail("Currently focused element is not a cell editor: "
- + focusedElement);
- return null;
- }
- }
|