diff options
author | Aleksi Hietanen <aleksi@vaadin.com> | 2017-01-10 15:56:37 +0200 |
---|---|---|
committer | Pekka Hyvönen <pekka@vaadin.com> | 2017-01-10 15:56:37 +0200 |
commit | ae54094346c40be3a058e41c942236383362ffd0 (patch) | |
tree | c0c747dbc5cd2112e736e798fb685232ffff08ba /server/src/test/java | |
parent | 9ee9273b6d1dc6f521f7b9ee02743636c69cff53 (diff) | |
download | vaadin-framework-ae54094346c40be3a058e41c942236383362ffd0.tar.gz vaadin-framework-ae54094346c40be3a058e41c942236383362ffd0.zip |
Correctly reset DataCommunicator when its DataProvider is changed (#8138)
* Correctly reset DataCommunicator when its DataProvider is changed
* Improve ReplaceDataProviderTest
* Remove return type from AbstractListing.readItems
Diffstat (limited to 'server/src/test/java')
3 files changed, 113 insertions, 6 deletions
diff --git a/server/src/test/java/com/vaadin/data/provider/ReplaceDataProviderTest.java b/server/src/test/java/com/vaadin/data/provider/ReplaceDataProviderTest.java new file mode 100644 index 0000000000..0510022e5e --- /dev/null +++ b/server/src/test/java/com/vaadin/data/provider/ReplaceDataProviderTest.java @@ -0,0 +1,110 @@ +package com.vaadin.data.provider; + +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import java.util.List; +import java.util.function.IntFunction; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import org.junit.Test; + +import com.vaadin.server.SerializablePredicate; + +public class ReplaceDataProviderTest { + + public static class BeanWithEquals extends Bean { + + BeanWithEquals(int id) { + super(id); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + BeanWithEquals that = (BeanWithEquals) o; + + return id == that.id; + } + + @Override + public int hashCode() { + return id; + } + } + + public static class Bean { + protected final int id; + private final String fluff; + + Bean(int id) { + this.id = id; + this.fluff = "Fluff #" + id; + } + + public int getId() { + return id; + } + + @SuppressWarnings("unused") + public String getFluff() { + return fluff; + } + + } + + @Test + public void testBeanEquals() { + doTest(BeanWithEquals::new); + } + + @Test + public void testBeanSame() { + doTest(Bean::new); + } + + private <SOME_BEAN> void doTest(IntFunction<SOME_BEAN> beanConstructor) { + + DataCommunicator<SOME_BEAN, SerializablePredicate<SOME_BEAN>> dataCommunicator = new DataCommunicator<>(); + + List<SOME_BEAN> beans1 = createCollection(beanConstructor); + + ListDataProvider<SOME_BEAN> dataProvider = new ListDataProvider<>( + beans1); + + dataCommunicator.setDataProvider(dataProvider); + dataCommunicator.pushData(1, beans1.stream()); + + SOME_BEAN bean1_17 = beans1.get(17); + String key1_17 = dataCommunicator.getKeyMapper().key(bean1_17); + + assertSame(bean1_17, dataCommunicator.getKeyMapper().get(key1_17)); + + List<SOME_BEAN> beans2 = createCollection(beanConstructor); + + dataProvider = new ListDataProvider<>(beans2); + dataCommunicator.setDataProvider(dataProvider); + dataCommunicator.pushData(1, beans2.stream()); + + SOME_BEAN bean2_17 = beans2.get(17); + String key2_17 = dataCommunicator.getKeyMapper().key(bean2_17); + + assertSame(bean2_17, dataCommunicator.getKeyMapper().get(key2_17)); + assertNotEquals(key2_17, key1_17); + assertNull(dataCommunicator.getKeyMapper().get(key1_17)); + } + + private <SOME_BEAN> List<SOME_BEAN> createCollection( + IntFunction<SOME_BEAN> beanConstructor) { + return IntStream.range(1, 100).mapToObj(beanConstructor) + .collect(Collectors.toList()); + } +} diff --git a/server/src/test/java/com/vaadin/ui/AbstractListingTest.java b/server/src/test/java/com/vaadin/ui/AbstractListingTest.java index 819ed9feb3..212a15f32f 100644 --- a/server/src/test/java/com/vaadin/ui/AbstractListingTest.java +++ b/server/src/test/java/com/vaadin/ui/AbstractListingTest.java @@ -40,9 +40,8 @@ public class AbstractListingTest { } @Override - protected List<String> readItems(Element design, + protected void readItems(Element design, DesignContext context) { - return null; } @Override diff --git a/server/src/test/java/com/vaadin/ui/AbstractSingleSelectTest.java b/server/src/test/java/com/vaadin/ui/AbstractSingleSelectTest.java index 1b814921e7..9bbcc2ca43 100644 --- a/server/src/test/java/com/vaadin/ui/AbstractSingleSelectTest.java +++ b/server/src/test/java/com/vaadin/ui/AbstractSingleSelectTest.java @@ -60,9 +60,8 @@ public class AbstractSingleSelectTest { } @Override - protected List<Person> readItems(Element design, + protected void readItems(Element design, DesignContext context) { - return null; } @Override @@ -254,9 +253,8 @@ public class AbstractSingleSelectTest { } @Override - protected List<String> readItems(Element design, + protected void readItems(Element design, DesignContext context) { - return null; } }; |