/**
* 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.util.List;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.validation.ValidatorAdapter;
import org.junit.Test;
import com.premiumminds.webapp.wicket.testing.AbstractComponentTest;
import com.premiumminds.webapp.wicket.validators.HibernateValidatorProperty;
import com.premiumminds.wicket.crudifier.form.CrudifierEntitySettings;
import com.premiumminds.wicket.crudifier.form.CrudifierEntitySettings.GridSize;
public class AbstractControlGroupTest extends AbstractComponentTest {
private class TestGroup extends AbstractControlGroup<String> {
private static final long serialVersionUID = 1L;
private TextField<String> field;
protected WebMarkupContainer box;
public TestGroup(String id, IModel<String> model) {
super(id, model);
field = new TextField<String>("field", model);
box = new WebMarkupContainer("box");
}
@Override
protected void onInitialize() {
super.onInitialize();
add(field);
add(box);
};
@Override
public FormComponent<String> getFormComponent() {
return field;
}
};
@Test
public void testInit() {
CrudifierEntitySettings settings = new CrudifierEntitySettings();
TestGroup tg = new TestGroup("test", null);
tg.init("prop", tg, false, String.class, settings);
assertEquals("prop", tg.getPropertyName());
assertEquals(tg, tg.getResourceBase());
assertEquals(String.class, tg.getType());
assertEquals(settings, tg.getEntitySettings());
}
@Test
public void testGetModel() {
IModel<String> str = new Model<String>("model");
TestGroup tg = new TestGroup("test", str);
assertEquals(str, tg.getModel());
}
@Test
public void testInitialization() {
TestGroup tg = new TestGroup("test", null);
tg.init("prop", tg, true, String.class, null);
startTest(tg);
replayAll();
verifyAll();
getTester().assertComponent(tg.getPageRelativePath(), TestGroup.class);
getTester().assertComponent(tg.field.getPageRelativePath(), TextField.class);
getTester().assertComponent(tg.box.getPageRelativePath(), WebMarkupContainer.class);
getTester().assertRequired(tg.field.getPageRelativePath());
assertEquals("prop", tg.field.getLabel().getObject());
List<? extends Behavior> behaviors = tg.field.getBehaviors();
assertEquals(1, behaviors.size());
assertTrue(behaviors.get(0) instanceof ValidatorAdapter);
assertTrue(((ValidatorAdapter<?>)behaviors.get(0)).getValidator() instanceof HibernateValidatorProperty);
}
@Test
public void testInitRequiredFalse() {
TestGroup tg = new TestGroup("test", null);
tg.init("prop", tg, false, String.class, null);
startTest(tg);
replayAll();
verifyAll();
exception.expect(AssertionError.class);
getTester().assertRequired(tg.field.getPageRelativePath());
}
@Test
public void testAddInputBoxGridSizeNoSetting() {
CrudifierEntitySettings settings = new CrudifierEntitySettings();
TestGroup tg = new TestGroup("test", null) {
private static final long serialVersionUID = 1L;
@Override
protected void onInitialize() {
super.onInitialize();
addInputBoxGridSize(box);
}
};
tg.init("prop", tg, false, String.class, settings);
startTest(tg);
replayAll();
verifyAll();
assertEquals("col-lg-10", getTester().getTagByWicketId(tg.box.getId()).getAttribute("class"));
}
@Test
public void testAddInputBoxGridSize() {
CrudifierEntitySettings settings = new CrudifierEntitySettings();
TestGroup tg[] = new TestGroup[10];
for (int i = 0; i < tg.length; i++) {
tg[i] = new TestGroup("test", null) {
private static final long serialVersionUID = 1L;
@Override
protected void onInitialize() {
super.onInitialize();
addInputBoxGridSize(box);
}
};
tg[i].init("prop", tg[i], false, String.class, settings);
settings.getGridFieldsSizes().put("prop", GridSize.valueOf("COL" + (i + 1)));
startTest(tg[i]);
replayAll();
verifyAll();
assertEquals("col-lg-" + (i + 1), getTester().getTagByWicketId(tg[i].box.getId()).getAttribute("class"));
resetAll();
resetTest();
}
}
}