123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- package com.vaadin.tests.components.grid;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertTrue;
-
- import org.junit.Test;
- import org.openqa.selenium.WebElement;
-
- import com.vaadin.testbench.By;
- import com.vaadin.testbench.elements.GridElement.GridCellElement;
- import com.vaadin.tests.components.grid.basics.GridBasicsTest;
-
- public class GridSelectAllTest extends GridBasicsTest {
-
- @Test
- public void testSelectAllCheckbox() {
- setSelectionModelMulti();
- GridCellElement header = getGridElement().getHeaderCell(0, 0);
-
- assertTrue("No checkbox", header.isElementPresent(By.tagName("input")));
- header.findElement(By.tagName("input")).click();
-
- for (int i = 0; i < GridBasicsTest.ROWS; i += 100) {
- assertTrue("Row " + i + " was not selected.",
- getGridElement().getRow(i).isSelected());
- }
-
- header.findElement(By.tagName("input")).click();
- assertFalse("Row 100 was still selected",
- getGridElement().getRow(100).isSelected());
- }
-
- @Test
- public void testSelectAllAndSort() {
- setSelectionModelMulti();
- GridCellElement header = getGridElement().getHeaderCell(0, 0);
-
- header.findElement(By.tagName("input")).click();
-
- getGridElement().getHeaderCell(0, 1).click();
-
- WebElement selectionBox = getGridElement().getCell(4, 0)
- .findElement(By.tagName("input"));
- selectionBox.click();
- selectionBox.click();
-
- assertFalse("Exception occurred on row reselection.", logContainsText(
- "Exception occurred, java.lang.IllegalStateException: No item id for key 101 found."));
- }
-
- @Test
- public void testSelectAllCheckboxWhenChangingModels() {
- GridCellElement header;
- header = getGridElement().getHeaderCell(0, 0);
- assertFalse(
- "Check box shouldn't have been in header for Single Selection Model",
- header.isElementPresent(By.tagName("input")));
-
- setSelectionModelMulti();
- header = getGridElement().getHeaderCell(0, 0);
- assertTrue("Multi Selection Model should have select all checkbox",
- header.isElementPresent(By.tagName("input")));
-
- setSelectionModelSingle();
- header = getGridElement().getHeaderCell(0, 0);
- assertFalse(
- "Check box shouldn't have been in header for Single Selection Model",
- header.isElementPresent(By.tagName("input")));
-
- // Single selection model shouldn't have selection column to begin with
- assertFalse(
- "Selection columnn shouldn't have been in grid for Single Selection Model",
- getGridElement().getCell(0, 1)
- .isElementPresent(By.tagName("input")));
-
- setSelectionModelSingle();
- header = getGridElement().getHeaderCell(0, 0);
- assertFalse(
- "Check box shouldn't have been in header for None Selection Model",
- header.isElementPresent(By.tagName("input")));
- }
-
- @Test
- public void testSelectAllCheckboxWithHeaderOperations() {
- setSelectionModelMulti();
- selectMenuPath("Component", "Header", "Prepend header row");
- assertEquals(2, getGridElement().getHeaderCount());
- selectMenuPath("Component", "Header", "Append header row");
- assertEquals(3, getGridElement().getHeaderCount());
-
- GridCellElement header = getGridElement().getHeaderCell(1, 0);
- assertTrue("Multi Selection Model should have select all checkbox",
- header.isElementPresent(By.tagName("input")));
- }
-
- @Test
- public void testSelectAllCheckboxAfterPrependHeaderOperations() {
- selectMenuPath("Component", "Header", "Prepend header row");
- assertEquals(2, getGridElement().getHeaderCount());
-
- setSelectionModelMulti();
- GridCellElement header = getGridElement().getHeaderCell(1, 0);
- assertTrue("Multi Selection Model should have select all checkbox",
- header.isElementPresent(By.tagName("input")));
-
- setSelectionModelSingle();
- header = getGridElement().getHeaderCell(1, 0);
- assertFalse(
- "Check box shouldn't have been in header for Single Selection Model",
- header.isElementPresent(By.tagName("input")));
-
- selectMenuPath("Component", "Header", "Append header row");
- assertEquals(3, getGridElement().getHeaderCount());
-
- setSelectionModelMulti();
- header = getGridElement().getHeaderCell(1, 0);
- assertTrue("Multi Selection Model should have select all checkbox",
- header.isElementPresent(By.tagName("input")));
- }
-
- @Test
- public void testSelectAllCheckbox_selectedAllFromClient_afterDeselectingOnClientSide_notSelected() {
- setSelectionModelMulti();
-
- verifyAllSelected(false);
-
- getSelectAllCheckbox().click();
-
- verifyAllSelected(true);
-
- getGridElement().getCell(5, 0).click();
-
- verifyAllSelected(false);
-
- getGridElement().getCell(5, 0).click();
-
- // EXPECTED since multiselection model can't
- // verify that all have been selected
- verifyAllSelected(false);
- }
-
- @Test
- public void testSelectAllCheckbox_selectedAllFromClient_afterDeselectingOnServerSide_notSelected() {
- setSelectionModelMulti();
-
- verifyAllSelected(false);
-
- getSelectAllCheckbox().click();
-
- verifyAllSelected(true);
-
- toggleFirstRowSelection();
-
- verifyAllSelected(false);
-
- toggleFirstRowSelection();
-
- // EXPECTED since multiselection model can't
- // verify that all have been selected
- verifyAllSelected(false);
- }
-
- @Test
- public void testSelectAllCheckbox_selectedAllFromServer_afterDeselectingOnClientSide_notSelected() {
- selectAll(); // triggers selection model change
-
- verifyAllSelected(true);
-
- getGridElement().getCell(5, 0).click();
-
- verifyAllSelected(false);
-
- getGridElement().getCell(5, 0).click();
-
- // EXPECTED since multiselection model can't
- // verify that all have been selected
- verifyAllSelected(false);
- }
-
- @Test
- public void testSelectAllCheckbox_selectedAllFromServer_afterDeselectingOnServerSide_notSelected() {
- selectAll(); // triggers selection model change
-
- verifyAllSelected(true);
-
- toggleFirstRowSelection();
-
- verifyAllSelected(false);
-
- toggleFirstRowSelection();
-
- // EXPECTED since multiselection model can't
- // verify that all have been selected
- verifyAllSelected(false);
- }
-
- @Test
- public void testSelectAllCheckbox_triggerVisibility() {
- verifySelectAllNotVisible();
-
- setSelectionModelMulti();
-
- verifySelectAllVisible();
-
- setSelectAllCheckBoxHidden();
-
- verifySelectAllNotVisible();
-
- setSelectAllCheckBoxDefault();
-
- verifySelectAllVisible(); // visible because in memory data provider
-
- setSelectAllCheckBoxHidden();
-
- verifySelectAllNotVisible();
-
- setSelectAllCheckBoxVisible();
-
- verifySelectAllVisible();
- }
-
- @Test
- public void testSelectAllCheckboxNotVisible_selectAllFromServer_staysHidden() {
- setSelectionModelMulti();
-
- verifySelectAllVisible();
-
- setSelectAllCheckBoxHidden();
-
- verifySelectAllNotVisible();
-
- selectAll();
-
- verifySelectAllNotVisible();
- }
-
- @Test
- public void testSelectAll_immediatelyWhenSettingSelectionModel() {
- verifySelectAllNotVisible();
-
- selectAll(); // changes selection model too
-
- verifyAllSelected(true);
- }
-
- @Test
- public void testSelectAllCheckBoxHidden_immediatelyWhenChaningModel() {
- verifySelectAllNotVisible();
-
- setSelectAllCheckBoxHidden(); // changes selection model
-
- verifySelectAllNotVisible();
- }
-
- private void verifyAllSelected(boolean selected) {
- verifySelectAllVisible();
- assertEquals("Select all checkbox selection state wrong", selected,
- getSelectAllCheckbox().isSelected());
- }
-
- private void verifySelectAllVisible() {
- assertTrue("Select all checkbox should be displayed",
- getSelectAllCheckbox().isDisplayed());
- }
-
- private void verifySelectAllNotVisible() {
- assertEquals("Select all checkbox should not be displayed", 0,
- getGridElement().getHeaderCell(0, 0)
- .findElements(By.tagName("input")).size());
- }
-
- }
|