|
|
@@ -0,0 +1,167 @@ |
|
|
|
package com.vaadin.tests.components.table; |
|
|
|
|
|
|
|
import static org.junit.Assert.assertFalse; |
|
|
|
import static org.junit.Assert.assertTrue; |
|
|
|
import static org.junit.Assert.fail; |
|
|
|
|
|
|
|
import org.junit.Test; |
|
|
|
import org.openqa.selenium.By; |
|
|
|
import org.openqa.selenium.WebElement; |
|
|
|
|
|
|
|
import com.vaadin.testbench.TestBenchElement; |
|
|
|
import com.vaadin.testbench.elements.TableElement; |
|
|
|
import com.vaadin.tests.tb3.MultiBrowserTest; |
|
|
|
|
|
|
|
@SuppressWarnings("deprecation") |
|
|
|
public class TableGeneratedRowsTest extends MultiBrowserTest { |
|
|
|
|
|
|
|
@Override |
|
|
|
protected Class<?> getUIClass() { |
|
|
|
return Tables.class; |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void changeRowGenerator() { |
|
|
|
openTestURL(); |
|
|
|
|
|
|
|
TableElement table = $(TableElement.class).first(); |
|
|
|
|
|
|
|
/* No row generator */ |
|
|
|
|
|
|
|
TestBenchElement cell = table.getCell(4, 0); |
|
|
|
int tableWidth = table.getSize().getWidth(); |
|
|
|
int cellWidth = cell.getSize().getWidth(); |
|
|
|
int buffer = 40; // for paddings, borders, scrollbars, and bit extra |
|
|
|
int bufferedTableWidth = tableWidth - buffer; |
|
|
|
String text = cell.getText(); |
|
|
|
|
|
|
|
assertFalse("Unexpected cell contents without applying row generator: " |
|
|
|
+ text, text != null && text.startsWith("FOOBARBAZ")); |
|
|
|
assertLessThan( |
|
|
|
"Cell shouldn't be spanned without applying row generator: " |
|
|
|
+ cellWidth + " isn't less than " + (tableWidth / 10), |
|
|
|
cellWidth, tableWidth / 10); |
|
|
|
|
|
|
|
/* Spanned row generator */ |
|
|
|
|
|
|
|
selectMenuPath("Component", "Features", "Row generator", |
|
|
|
"Every fifth row, spanned"); |
|
|
|
|
|
|
|
cell = table.getCell(4, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertTrue( |
|
|
|
"Unexpected cell contents for spanned generated row: " + text, |
|
|
|
text != null && text.startsWith("FOOBARBAZ")); |
|
|
|
assertLessThanOrEqual( |
|
|
|
"Spanned cell isn't wide enough for spanned generated row: " |
|
|
|
+ cellWidth + " isn't more than " + bufferedTableWidth, |
|
|
|
bufferedTableWidth, cellWidth); |
|
|
|
|
|
|
|
/* Non-spanned row generator */ |
|
|
|
|
|
|
|
selectMenuPath("Component", "Features", "Row generator", |
|
|
|
"Every tenth row, no spanning"); |
|
|
|
|
|
|
|
cell = table.getCell(4, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertFalse( |
|
|
|
"Unexpected cell contents after replacing spanned row generator: " |
|
|
|
+ text, |
|
|
|
text != null && text.startsWith("FOOBARBAZ")); |
|
|
|
assertLessThan( |
|
|
|
"Cell shouldn't be spanned anymore after replacing spanned row generator: " |
|
|
|
+ cellWidth + " isn't less than " + (tableWidth / 10), |
|
|
|
cellWidth, tableWidth / 10); |
|
|
|
|
|
|
|
cell = table.getCell(9, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertTrue("Unexpected cell contents for non-spanned generated row: " |
|
|
|
+ text, text != null && text.startsWith("FOO0")); |
|
|
|
assertLessThan( |
|
|
|
"Unexpected cell width for non-spanned generated row: " |
|
|
|
+ cellWidth + " isn't less than " + (tableWidth / 10), |
|
|
|
cellWidth, tableWidth / 10); |
|
|
|
|
|
|
|
/* Spanned and html formatted row generator */ |
|
|
|
|
|
|
|
selectMenuPath("Component", "Features", "Row generator", |
|
|
|
"Every eight row, spanned, html formatted"); |
|
|
|
|
|
|
|
cell = table.getCell(9, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertFalse( |
|
|
|
"Unexpected cell contents after replacing non-spanned row generator: " |
|
|
|
+ text, |
|
|
|
text != null && text.startsWith("FOO0")); |
|
|
|
assertLessThan( |
|
|
|
"Unexpected cell width after replacing non-spanned row generator: " |
|
|
|
+ cellWidth + " isn't less than " + (tableWidth / 10), |
|
|
|
cellWidth, tableWidth / 10); |
|
|
|
|
|
|
|
cell = table.getCell(7, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertTrue("Unexpected contents for spanned and html formatted cell: " |
|
|
|
+ text, text != null && text.startsWith("FOO BAR BAZ")); |
|
|
|
assertLessThanOrEqual( |
|
|
|
"Spanned and html formatted cell isn't wide enough: " |
|
|
|
+ cellWidth + " isn't more than " + bufferedTableWidth, |
|
|
|
bufferedTableWidth, cellWidth); |
|
|
|
|
|
|
|
WebElement bazSpan = cell.findElement(By.tagName("span")); |
|
|
|
if (bazSpan == null) { |
|
|
|
fail("Unexpected styling: no span found"); |
|
|
|
} else { |
|
|
|
String bazStyle = bazSpan.getAttribute("style"); |
|
|
|
assertTrue("Unexpected styling: " + bazStyle, |
|
|
|
bazStyle != null && bazStyle.contains("color: red")); |
|
|
|
} |
|
|
|
|
|
|
|
/* Spanned row generator for all rows */ |
|
|
|
|
|
|
|
selectMenuPath("Component", "Features", "Row generator", |
|
|
|
"Every row, spanned"); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; ++i) { |
|
|
|
cell = table.getCell(i, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertTrue( |
|
|
|
"Unexpected cell contents with every row spanned: " + text, |
|
|
|
text != null && text.startsWith("SPANNED")); |
|
|
|
assertLessThanOrEqual( |
|
|
|
"Spanned cell isn't wide enough with every row spanned: " |
|
|
|
+ cellWidth + " isn't more than " |
|
|
|
+ bufferedTableWidth, |
|
|
|
bufferedTableWidth, cellWidth); |
|
|
|
} |
|
|
|
|
|
|
|
/* No row generator */ |
|
|
|
|
|
|
|
selectMenuPath("Component", "Features", "Row generator", "None"); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; ++i) { |
|
|
|
cell = table.getCell(i, 0); |
|
|
|
cellWidth = cell.getSize().getWidth(); |
|
|
|
text = cell.getText(); |
|
|
|
|
|
|
|
assertFalse( |
|
|
|
"Unexpected cell contents without row generator: " + text, |
|
|
|
text != null && text.startsWith("SPANNED")); |
|
|
|
assertLessThan( |
|
|
|
"Unexpected cell width without row generator: " + cellWidth |
|
|
|
+ " isn't less than " + (tableWidth / 10), |
|
|
|
cellWidth, tableWidth / 10); |
|
|
|
} |
|
|
|
} |
|
|
|
} |