/** * Copyright (C) 2014 Premium Minds. * * This file is part of wicket-crudifier. * * wicket-crudifier is free software: you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * wicket-crudifier is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with wicket-crudifier. If not, see <http://www.gnu.org/licenses/>. */ package com.premiumminds.wicket.crudifier.form.elements; import static org.junit.Assert.*; import java.io.Serializable; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.validation.IErrorMessageSource; import org.apache.wicket.validation.IValidationError; import org.junit.Test; import com.premiumminds.webapp.wicket.bootstrap.BootstrapControlGroupFeedback; import com.premiumminds.webapp.wicket.testing.AbstractComponentTest; import com.premiumminds.wicket.crudifier.IObjectRenderer; import com.premiumminds.wicket.crudifier.form.CrudifierEntitySettings; import com.premiumminds.wicket.crudifier.form.EntityProvider; import com.premiumminds.wicket.crudifier.form.CrudifierEntitySettings.GridSize; public class CollectionControlGroupTest extends AbstractComponentTest { private class TestProvider extends EntityProvider<String> { private static final long serialVersionUID = 1L; @Override public List<String> load() { return Arrays.asList("123", "456", "789"); } } private class TestRenderer implements IObjectRenderer<String> { private static final long serialVersionUID = 1L; private boolean called = false; @Override public String render(String object) { called = true; return object; } } @Test public void testGetFormComponent() { CollectionControlGroup<String> ccg = new CollectionControlGroup<String>("test", null); assertTrue(ccg.getFormComponent() instanceof ListMultipleChoice); } @Test public void testValidationError() { CollectionControlGroup<String> ccg = new CollectionControlGroup<String>("test", null); ccg.getFormComponent().error(new IValidationError() { private static final long serialVersionUID = 1L; @Override public Serializable getErrorMessage(IErrorMessageSource messageSource) { return "Test error"; } }); assertEquals(1, ccg.getFormComponent().getFeedbackMessages().size()); assertEquals("Test error", ccg.getFormComponent().getFeedbackMessages().first().getMessage()); } @Test public void testInitialization() { CrudifierEntitySettings settings = new CrudifierEntitySettings(); CollectionControlGroup<String> ccg = new CollectionControlGroup<String>("test", null); ccg.init("prop", ccg, true, boolean.class, settings); ccg.setConfiguration(new TestProvider(), new HashMap<Class<?>, IObjectRenderer<?>>()); settings.getGridFieldsSizes().put("prop", GridSize.valueOf("COL3")); startTest(ccg); replayAll(); verifyAll(); getTester().assertComponent(ccg.getPageRelativePath(), CollectionControlGroup.class); getTester().assertComponent(ccg.getFormComponent().getParent().getParent().getPageRelativePath(), BootstrapControlGroupFeedback.class); getTester().assertComponent(ccg.getFormComponent().getParent().getPageRelativePath(), WebMarkupContainer.class); getTester().assertComponent(ccg.getFormComponent().getPageRelativePath(), ListMultipleChoice.class); assertEquals("col-lg-3", getTester().getTagByWicketId(ccg.getFormComponent().getParent().getId()).getAttribute("class")); } @Test public void testCustomRenderer() { CrudifierEntitySettings settings = new CrudifierEntitySettings(); Map<Class<?>, IObjectRenderer<?>> map = new HashMap<Class<?>, IObjectRenderer<?>>(); TestRenderer renderer = new TestRenderer(); map.put(String.class, renderer); CollectionControlGroup<String> ccg = new CollectionControlGroup<String>("test", null); ccg.init("prop", ccg, true, boolean.class, settings); ccg.setConfiguration(new TestProvider(), map); startTest(ccg); replayAll(); verifyAll(); assertTrue(renderer.called); } }