From e4fbf7a5f2ab83d613100ec83aac99a3f88bf8b9 Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Wed, 30 Nov 2016 16:14:57 +0200 Subject: [PATCH] Add test for NativeSelect caption generators Change-Id: Id074c55b1c29dfb1cc499d918422bcf1c7bce0ba --- .../NativeSelectCaptionGeneration.java | 45 +++++++++++++ .../nativeselect/TestComponent.html | 19 ++++++ .../NativeSelectCaptionGenerationTest.java | 65 +++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 uitest/src/main/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGeneration.java create mode 100644 uitest/src/main/resources/com/vaadin/tests/components/nativeselect/TestComponent.html create mode 100644 uitest/src/test/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGenerationTest.java diff --git a/uitest/src/main/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGeneration.java b/uitest/src/main/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGeneration.java new file mode 100644 index 0000000000..8d386cf823 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGeneration.java @@ -0,0 +1,45 @@ +package com.vaadin.tests.components.nativeselect; + +import com.vaadin.annotations.DesignRoot; +import com.vaadin.server.VaadinRequest; +import com.vaadin.ui.Button; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.ItemCaptionGenerator; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.declarative.Design; + +public class NativeSelectCaptionGeneration extends UI { + + @DesignRoot + public static class TestComponent extends VerticalLayout { + + HorizontalLayout buttons; + NativeSelect nativeSelect; + + public TestComponent() { + Design.read(this); + + // Store the declarative with to string fallback + ItemCaptionGenerator declarative = nativeSelect + .getItemCaptionGenerator(); + + buttons.addComponents( + new Button("toString", + e -> nativeSelect + .setItemCaptionGenerator(String::toString)), + new Button("Only number", + e -> nativeSelect.setItemCaptionGenerator( + str -> str.substring(7))), + new Button("Declarative", e -> nativeSelect + .setItemCaptionGenerator(declarative))); + } + } + + @Override + protected void init(VaadinRequest request) { + setContent(new TestComponent()); + } + +} diff --git a/uitest/src/main/resources/com/vaadin/tests/components/nativeselect/TestComponent.html b/uitest/src/main/resources/com/vaadin/tests/components/nativeselect/TestComponent.html new file mode 100644 index 0000000000..f4228bf60f --- /dev/null +++ b/uitest/src/main/resources/com/vaadin/tests/components/nativeselect/TestComponent.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uitest/src/test/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGenerationTest.java b/uitest/src/test/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGenerationTest.java new file mode 100644 index 0000000000..445c11e889 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/nativeselect/NativeSelectCaptionGenerationTest.java @@ -0,0 +1,65 @@ +package com.vaadin.tests.components.nativeselect; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.TestBenchElement; +import com.vaadin.testbench.customelements.NativeSelectElement; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +public class NativeSelectCaptionGenerationTest extends SingleBrowserTest { + + private static final String[] value = new String[] { "Foo", "Bar", "Baz", + "Spam", "Eggs" }; + + @Test + public void testDefaultDeclarativeCaptions() { + openTestURL(); + List options = $(NativeSelectElement.class).first() + .getOptions(); + for (int i = 0; i < options.size(); ++i) { + Assert.assertEquals("Captions don't match.", value[i], + options.get(i).getText()); + } + } + + @Test + public void testToStringCaptions() { + openTestURL(); + $(ButtonElement.class).caption("toString").first().click(); + List options = $(NativeSelectElement.class).first() + .getOptions(); + for (int i = 0; i < options.size(); ++i) { + Assert.assertEquals("Captions don't match.", "Option " + (i + 1), + options.get(i).getText()); + } + } + + @Test + public void testNumberOnlyCaptions() { + openTestURL(); + $(ButtonElement.class).caption("Only number").first().click(); + List options = $(NativeSelectElement.class).first() + .getOptions(); + for (int i = 0; i < options.size(); ++i) { + Assert.assertEquals("Captions don't match.", "" + (i + 1), + options.get(i).getText()); + } + } + + @Test + public void testChangeGeneratorToStringAndBackToDeclarative() { + openTestURL(); + $(ButtonElement.class).caption("toString").first().click(); + $(ButtonElement.class).caption("Declarative").first().click(); + List options = $(NativeSelectElement.class).first() + .getOptions(); + for (int i = 0; i < options.size(); ++i) { + Assert.assertEquals("Captions don't match.", value[i], + options.get(i).getText()); + } + } +} -- 2.39.5