package com.vaadin.tests.server.component; import java.util.ArrayList; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import com.vaadin.data.provider.DataGenerator; import com.vaadin.shared.data.DataCommunicatorConstants; import com.vaadin.shared.ui.ListingJsonConstants; import com.vaadin.ui.AbstractListing; import com.vaadin.ui.CheckBoxGroup; import com.vaadin.ui.ComboBox; import com.vaadin.ui.ListSelect; import com.vaadin.ui.NativeSelect; import com.vaadin.ui.RadioButtonGroup; import com.vaadin.ui.TwinColSelect; import elemental.json.JsonObject; public class ItemCaptionGeneratorTest { private static class TestDataGenerator implements DataGenerator<Object> { JsonObject generated = null; @Override public void generateData(Object item, JsonObject jsonObject) { generated = jsonObject; } } @Test public void testItemCaptionGenerator_nullCaptionGiven_convertedToEmptyString() { Collection<AbstractListing<Object>> listings = new ArrayList<>(); ComboBox<Object> comboBox = new ComboBox<>(); comboBox.setData(DataCommunicatorConstants.NAME); comboBox.setItemCaptionGenerator(item -> null); listings.add(comboBox); CheckBoxGroup<Object> cbg = new CheckBoxGroup<>(); cbg.setData(ListingJsonConstants.JSONKEY_ITEM_VALUE); cbg.setItemCaptionGenerator(item -> null); listings.add(cbg); ListSelect<Object> listSelect = new ListSelect<>(); listSelect.setData(ListingJsonConstants.JSONKEY_ITEM_VALUE); listSelect.setItemCaptionGenerator(item -> null); listings.add(listSelect); NativeSelect<Object> nativeSelect = new NativeSelect<>(); nativeSelect.setData(DataCommunicatorConstants.DATA); nativeSelect.setItemCaptionGenerator(item -> null); listings.add(nativeSelect); RadioButtonGroup<Object> rbg = new RadioButtonGroup<>(); rbg.setData(ListingJsonConstants.JSONKEY_ITEM_VALUE); rbg.setItemCaptionGenerator(item -> null); listings.add(rbg); TwinColSelect<Object> tc = new TwinColSelect<>(); tc.setData(ListingJsonConstants.JSONKEY_ITEM_VALUE); tc.setItemCaptionGenerator(item -> null); listings.add(tc); for (AbstractListing<Object> listing : listings) { listing.setItems("Uno"); TestDataGenerator dataGenerator = new TestDataGenerator(); listing.getDataCommunicator().addDataGenerator(dataGenerator); listing.getDataCommunicator().beforeClientResponse(true); Assert.assertEquals( listing.getClass().getName() + " does not convert null caption from generator to empty string", "", dataGenerator.generated.hasKey((String) listing.getData()) ? dataGenerator.generated.getString( (String) listing.getData()) : null); } } }