/* * 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.data.provider; import org.junit.Assert; import org.junit.Test; import com.vaadin.data.provider.BackendDataProviderTest.StrBeanBackEndDataProvider; import com.vaadin.server.SerializablePredicate; public class ConfigurableFilterDataProviderWrapperTest { private static SerializablePredicate<StrBean> xyzFilter = item -> item .getValue().equals("Xyz"); private StrBeanBackEndDataProvider backEndProvider = new StrBeanBackEndDataProvider( StrBean.generateRandomBeans(100)); private ConfigurableFilterDataProvider<StrBean, Void, SerializablePredicate<StrBean>> configurableVoid = backEndProvider .withConfigurableFilter(); private ConfigurableFilterDataProvider<StrBean, String, Integer> configurablePredicate = backEndProvider .withConfigurableFilter((queryFilter, configuredFilter) -> item -> { if (queryFilter != null && !item.getValue().equals(queryFilter)) { return false; } if (configuredFilter != null && item.getId() < configuredFilter.intValue()) { return false; } return true; }); @Test public void void_setFilter() { configurableVoid.setFilter(xyzFilter); Assert.assertEquals("Set filter should be used", 1, configurableVoid.size(new Query<>())); configurableVoid.setFilter(null); Assert.assertEquals("null filter should return all items", 100, configurableVoid.size(new Query<>())); } @Test(expected = Exception.class) @SuppressWarnings({ "unchecked", "rawtypes" }) public void void_nonNullQueryFilter_throws() { configurableVoid .size((Query) new Query<StrBean, String>("invalid filter")); } @Test public void predicate_setFilter() { configurablePredicate.setFilter(Integer.valueOf(50)); Assert.assertEquals("Set filter should be used", 49, configurablePredicate.size(new Query<>())); configurablePredicate.setFilter(null); Assert.assertEquals("null filter should return all items", 100, configurablePredicate.size(new Query<>())); } @Test public void predicate_queryFilter() { Assert.assertEquals("Query filter should be used", 1, configurablePredicate.size(new Query<>("Xyz"))); Assert.assertEquals("null query filter should return all items", 100, configurablePredicate.size(new Query<>())); } @Test public void predicate_combinedFilters() { configurablePredicate.setFilter(Integer.valueOf(50)); Assert.assertEquals("Both filters should be used", 0, configurablePredicate.size(new Query<>("Xyz"))); configurablePredicate.setFilter(null); Assert.assertEquals("Only zyz filter should be used", 1, configurablePredicate.size(new Query<>("Xyz"))); } }