aboutsummaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>2018-04-19 12:10:10 +0300
committerIlia Motornyi <elmot@vaadin.com>2018-04-19 12:10:10 +0300
commitf0bb6f4e35cb4ed3f01ea8cadb521e79d623870a (patch)
treee3928380bda2a04c412131344bfbc7de117444d3 /uitest
parent406473ab0b52d0fc4af2c97870e97993321c108f (diff)
downloadvaadin-framework-f0bb6f4e35cb4ed3f01ea8cadb521e79d623870a.tar.gz
vaadin-framework-f0bb6f4e35cb4ed3f01ea8cadb521e79d623870a.zip
Fix AbstractSingleSelect selection and state updates (#10796)
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdate.java102
-rw-r--r--uitest/src/main/java/com/vaadin/tests/data/DummyData.java28
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdateTest.java98
3 files changed, 204 insertions, 24 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdate.java b/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdate.java
new file mode 100644
index 0000000000..7e1e200a71
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdate.java
@@ -0,0 +1,102 @@
+package com.vaadin.tests.components.combobox;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.server.ClassResource;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.ComboBox;
+
+@Widgetset("com.vaadin.DefaultWidgetSet")
+public class ComboBoxCaptionAndIconUpdate extends AbstractTestUI {
+
+ public static class Commit {
+ private final long id;
+ private String message;
+ private ClassResource icon;
+
+ Commit(long id, String message, ClassResource icon) {
+ this.id = id;
+ this.message = message;
+ this.icon = icon;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public ClassResource getIcon() {
+ return icon;
+ }
+
+ public void setIcon(ClassResource icon) {
+ this.icon = icon;
+ }
+ }
+
+ List<Commit> backend = new ArrayList<>();
+
+ private final ClassResource M_RESOURCE = new ClassResource(
+ "/com/vaadin/tests/m.gif");
+ private final ClassResource FI_RESOURCE = new ClassResource(
+ "/com/vaadin/tests/integration/fi.gif");
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ ComboBox<Commit> comboBox = new ComboBox<Commit>();
+
+ backend = Stream.of(1, 2)
+ .map(id -> new Commit(id, "Commit ID " + id, M_RESOURCE))
+ .collect(Collectors.toList());
+ comboBox.setItems(backend);
+ comboBox.setValue(backend.get(0));
+
+ comboBox.setItemIconGenerator(i -> FI_RESOURCE);
+ comboBox.setItemCaptionGenerator(i -> "Commit " + i.getId());
+ comboBox.setWidth("300px");
+
+ addComponent(comboBox);
+ addComponent(createButton("Set Icon Generator", "icon",
+ e -> comboBox.setItemIconGenerator(Commit::getIcon)));
+ addComponent(createButton("Set Caption Generator", "caption",
+ e -> comboBox.setItemCaptionGenerator(Commit::getMessage)));
+ addComponent(createButton("Edit Message", "editMsg", e -> {
+ Commit item = backend.get(0);
+ item.setMessage("Edited message");
+ comboBox.getDataProvider().refreshItem(item);
+ }));
+ addComponent(createButton("Edit Icon", "editIcon", e -> {
+ Commit item = backend.get(0);
+ item.setIcon(FI_RESOURCE);
+ comboBox.getDataProvider().refreshItem(item);
+ }));
+ addComponent(createButton("Edit Message and Icon", "editAll", e -> {
+ Commit item = backend.get(0);
+ item.setMessage("Edited message and icon");
+ item.setIcon(FI_RESOURCE);
+ comboBox.getDataProvider().refreshItem(item);
+ }));
+ }
+
+ private Button createButton(String caption, String id,
+ ClickListener listener) {
+ Button button = new Button(caption, listener);
+ button.setId(id);
+ return button;
+ }
+
+}
diff --git a/uitest/src/main/java/com/vaadin/tests/data/DummyData.java b/uitest/src/main/java/com/vaadin/tests/data/DummyData.java
index b4ecfd38c7..8842aca1de 100644
--- a/uitest/src/main/java/com/vaadin/tests/data/DummyData.java
+++ b/uitest/src/main/java/com/vaadin/tests/data/DummyData.java
@@ -47,8 +47,6 @@ public class DummyData extends AbstractTestUIWithLog {
public static class DummyComponent extends AbstractSingleSelect<String>
implements HasDataProvider<String> {
- private String selected;
-
private DummyComponent() {
addDataGenerator((str, json) -> {
json.put(DataCommunicatorConstants.DATA, str);
@@ -59,22 +57,6 @@ public class DummyData extends AbstractTestUIWithLog {
}
@Override
- public Optional<String> getSelectedItem() {
- return Optional.ofNullable(selected);
- }
-
- @Override
- public void setValue(String item) {
- if (selected != null) {
- getDataCommunicator().refresh(selected);
- }
- selected = item;
- if (selected != null) {
- getDataCommunicator().refresh(selected);
- }
- }
-
- @Override
public DataProvider<String, ?> getDataProvider() {
return internalGetDataProvider();
}
@@ -98,12 +80,10 @@ public class DummyData extends AbstractTestUIWithLog {
HorizontalLayout controls = new HorizontalLayout();
addComponent(controls);
- controls.addComponent(
- new Button("Select Foo 20",
- event -> dummy.setValue("Foo " + 20)));
- controls.addComponent(new Button("Reset data provider",
- event -> dummy
- .setDataProvider(new LoggingDataProvider(items))));
+ controls.addComponent(new Button("Select Foo 20",
+ event -> dummy.setValue("Foo " + 20)));
+ controls.addComponent(new Button("Reset data provider", event -> dummy
+ .setDataProvider(new LoggingDataProvider(items))));
controls.addComponent(
new Button("Remove all data", event -> dummy.setDataProvider(
new LoggingDataProvider(Collections.emptyList()))));
diff --git a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdateTest.java b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdateTest.java
new file mode 100644
index 0000000000..5ef0fdf0fa
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdateTest.java
@@ -0,0 +1,98 @@
+package com.vaadin.tests.components.combobox;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class ComboBoxCaptionAndIconUpdateTest extends SingleBrowserTest {
+
+ @Test
+ public void testInitialData() {
+ openTestURL();
+
+ assertDisplayValues("fi.gif", "Commit 1");
+ }
+
+ @Test
+ public void testChangeIconProvider() {
+ openTestURL();
+ changeIconGenerator();
+
+ assertDisplayValues("m.gif", "Commit 1");
+ }
+
+ @Test
+ public void testChangeCaptionProvider() {
+ openTestURL();
+ changeCaptionGenerator();
+
+ assertDisplayValues("fi.gif", "Commit ID 1");
+ }
+
+ @Test
+ public void testItemAndCaptionProvider() {
+ openTestURL();
+ changeCaptionGenerator();
+ changeIconGenerator();
+
+ assertDisplayValues("m.gif", "Commit ID 1");
+ }
+
+ @Test
+ public void testEditCaption() {
+ openTestURL();
+ changeIconGenerator();
+ changeCaptionGenerator();
+
+ clickButton("editMsg");
+ assertDisplayValues("m.gif", "Edited message");
+ }
+
+ @Test
+ public void testEditIcon() {
+ openTestURL();
+ changeIconGenerator();
+ changeCaptionGenerator();
+
+ clickButton("editIcon");
+ assertDisplayValues("fi.gif", "Commit ID 1");
+ }
+
+ @Test
+ public void testEditIconAndCaption() {
+ openTestURL();
+ changeIconGenerator();
+ changeCaptionGenerator();
+
+ clickButton("editAll");
+ assertDisplayValues("fi.gif", "Edited message and icon");
+
+ }
+
+ private void assertDisplayValues(String iconName, String caption) {
+ ComboBoxElement comboBox = $(ComboBoxElement.class).first();
+ String iconURL = comboBox.findElement(By.tagName("img"))
+ .getAttribute("src");
+ assertTrue("Icon URL did not end with " + iconName,
+ iconURL.endsWith(iconName));
+ assertEquals("Caption did not match", caption, comboBox.getValue());
+ }
+
+ private void changeIconGenerator() {
+ clickButton("icon");
+ }
+
+ private void changeCaptionGenerator() {
+ clickButton("caption");
+ }
+
+ private void clickButton(String id) {
+ $(ButtonElement.class).id(id).click();
+ }
+}