summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorAnastasia Smirnova <anasmi@utu.fi>2018-03-22 15:39:18 +0200
committerTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>2018-03-22 15:39:18 +0200
commit6fb2d1a98076c6fbb9ba014fab37d7bf7a6e6a62 (patch)
tree21e73157bb46a84baf2a3fc1cf2b5f7c52df949f /uitest
parent1187cf22f06df587b2a1ec1068be88e2b70c888d (diff)
downloadvaadin-framework-6fb2d1a98076c6fbb9ba014fab37d7bf7a6e6a62.tar.gz
vaadin-framework-6fb2d1a98076c6fbb9ba014fab37d7bf7a6e6a62.zip
Correctly handle data providers with overriden getId (#10728)
Fixes #10647 Fixes #10498
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithId.java71
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProvider.java110
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithIdTest.java26
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProviderTest.java28
4 files changed, 235 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithId.java b/uitest/src/main/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithId.java
new file mode 100644
index 0000000000..408e786a91
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithId.java
@@ -0,0 +1,71 @@
+package com.vaadin.tests.components.checkboxgroup;
+
+import com.vaadin.data.provider.DataProvider;
+import com.vaadin.data.provider.ListDataProvider;
+import com.vaadin.server.SerializablePredicate;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.CheckBoxGroup;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Objects;
+
+public class CheckCheckBoxGroupWithId extends AbstractTestUIWithLog {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ DataProvider<MyObject, SerializablePredicate<MyObject>> dataProvider = new ListDataProvider<MyObject>(
+ Arrays.asList(new MyObject("Yellow", "real"),
+ new MyObject("Red", "real"))) {
+ @Override
+ public Object getId(MyObject item) {
+ return item.getName();
+ }
+ };
+
+ CheckBoxGroup<MyObject> checkBoxGroup = new CheckBoxGroup<>();
+ checkBoxGroup.setItemCaptionGenerator(MyObject::getName);
+ checkBoxGroup.setDataProvider(dataProvider);
+ checkBoxGroup.setValue(
+ new HashSet<>(Arrays.asList(new MyObject("Yellow", null))));
+
+ addComponent(checkBoxGroup);
+ addButton("Deselect",
+ event -> checkBoxGroup.deselect(new MyObject("Yellow", "XX")));
+ }
+
+ public static class MyObject {
+ private final String name;
+ private final String other;
+
+ public MyObject(String name, String other) {
+ this.name = name;
+ this.other = other;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getOther() {
+ return other;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ MyObject myObject = (MyObject) o;
+ return Objects.equals(name, myObject.name)
+ && Objects.equals(other, myObject.other);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, other);
+ }
+ }
+}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProvider.java b/uitest/src/main/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProvider.java
new file mode 100644
index 0000000000..e6dce9a443
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProvider.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.twincolselect;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Objects;
+
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.data.provider.ListDataProvider;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.TwinColSelect;
+
+@Widgetset("com.vaadin.DefaultWidgetSet")
+public class TwinColSelectAndIdBasedDataProvider extends AbstractTestUIWithLog {
+
+ public static class MyObject {
+ private int id;
+ private String name;
+
+ public MyObject() {
+
+ }
+
+ public MyObject(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "MyObject{" + "id=" + id + ", name='" + name + '\'' + '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ MyObject myObject = (MyObject) o;
+ return id == myObject.id && Objects.equals(name, myObject.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, name);
+ }
+ }
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ ListDataProvider<MyObject> dataProvider = new ListDataProvider<MyObject>(
+ Arrays.asList(new MyObject(0, "Zero"),
+ new MyObject(1, "One"))) {
+
+ @Override
+ public Object getId(MyObject item) {
+ return item.getId();
+ }
+ };
+
+ TwinColSelect<MyObject> twinColSelect = new TwinColSelect<>();
+ twinColSelect.setDataProvider(dataProvider);
+
+ twinColSelect.setValue(Collections.singleton(new MyObject(1, null)));
+
+ twinColSelect.addValueChangeListener(
+ event1 -> log.log("value: " + event1.getValue()));
+
+ addComponent(twinColSelect);
+ addComponent(new Button("Deselect id=1", e -> {
+ twinColSelect.deselect(new MyObject(1, "foo"));
+ }));
+ }
+
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithIdTest.java b/uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithIdTest.java
new file mode 100644
index 0000000000..afcaae52f3
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckCheckBoxGroupWithIdTest.java
@@ -0,0 +1,26 @@
+package com.vaadin.tests.components.checkboxgroup;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.CheckBoxGroupElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class CheckCheckBoxGroupWithIdTest extends MultiBrowserTest {
+ private CheckBoxGroupElement checkBoxGroup;
+
+ @Before
+ public void setUp() {
+ openTestURL();
+ checkBoxGroup = $(CheckBoxGroupElement.class).first();
+ }
+
+ @Test
+ public void TestSelection() {
+ assertEquals(checkBoxGroup.getValue().size(), 1);
+ $(ButtonElement.class).first().click();
+ assertEquals(checkBoxGroup.getValue().size(), 0);
+ }
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProviderTest.java b/uitest/src/test/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProviderTest.java
new file mode 100644
index 0000000000..6475f43718
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/twincolselect/TwinColSelectAndIdBasedDataProviderTest.java
@@ -0,0 +1,28 @@
+package com.vaadin.tests.components.twincolselect;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.TwinColSelectElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class TwinColSelectAndIdBasedDataProviderTest extends MultiBrowserTest {
+
+ @Before
+ public void setUp() {
+ openTestURL();
+ }
+
+ @Test
+ public void TestSelection() {
+ assertEquals(getTwinColElement().getValues().size(), 1);
+ $(ButtonElement.class).first().click();
+ assertEquals(getTwinColElement().getValues().size(), 0);
+ }
+
+ private TwinColSelectElement getTwinColElement() {
+ return $(TwinColSelectElement.class).first();
+ }
+}