/* (c) 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.gwc.web.layer;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.web.ComponentBuilder;
import org.geoserver.web.FormTestPage;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geowebcache.filter.parameters.FloatParameterFilter;
import org.junit.Before;
import org.junit.Test;
public class FloatParameterFilterSubformTest extends GeoServerWicketTestSupport {
private IModel<FloatParameterFilter> model;
private FloatParameterFilter pf;
@Before
public void setUpInternal() throws Exception {
pf = new FloatParameterFilter();
pf.setKey("TEST");
model = Model.of(pf);
}
@Test
public void testPageLoad() {
startPage();
tester.assertComponent("form:panel:defaultValue", AbstractTextComponent.class);
tester.assertComponent("form:panel:values", AbstractTextComponent.class);
}
@SuppressWarnings("unchecked")
@Test
public void testLoadDefaultValues() {
startPage();
AbstractTextComponent<String> defaultValue = (AbstractTextComponent<String>)
tester.getComponentFromLastRenderedPage("form:panel:defaultValue");
AbstractTextComponent<List<Float>> values = (AbstractTextComponent<List<Float>>)
tester.getComponentFromLastRenderedPage("form:panel:values");
assertThat(defaultValue.getValue(), equalTo(""));
assertThat(values.getValue(), equalTo(""));
}
@SuppressWarnings("unchecked")
@Test
public void testLoadSpecifiedValues() {
pf.setDefaultValue("testDefault");
pf.setValues(Arrays.asList(1.5f, 2.6f));
startPage();
AbstractTextComponent<String> defaultValue = (AbstractTextComponent<String>)
tester.getComponentFromLastRenderedPage("form:panel:defaultValue");
AbstractTextComponent<List<Float>> values = (AbstractTextComponent<List<Float>>)
tester.getComponentFromLastRenderedPage("form:panel:values");
assertThat(defaultValue.getValue(), equalTo("testDefault"));
assertThat(values.getValue(), equalTo("1.5\r\n2.6"));
}
@Test
public void testChange() {
startPage();
FormTester formTester = tester.newFormTester("form");
formTester.setValue("panel:defaultValue", "testDefault");
formTester.setValue("panel:values", "1.5\r\n2.6");
formTester.submit();
assertThat(pf.getDefaultValue(), equalTo("testDefault"));
assertThat(pf.getValues(), contains(1.5f, 2.6f));
}
private void startPage() {
tester.startPage(new FormTestPage(new ComponentBuilder() {
/** serialVersionUID */
private static final long serialVersionUID = 1L;
public Component buildComponent(final String id) {
return new FloatParameterFilterSubform(id, model);
}
}));
}
}