/* (c) 2015 - 2016 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.equalTo; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import java.util.Locale; import org.apache.wicket.Component; import org.apache.wicket.markup.html.form.AbstractSingleSelectChoice; 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.CaseNormalizer; import org.geowebcache.filter.parameters.CaseNormalizer.Case; import org.junit.Before; import org.junit.Test; public class CaseNormalizerSubformTest extends GeoServerWicketTestSupport { private IModel<CaseNormalizer> model; private CaseNormalizer cn; @Before public void setUpInternal() throws Exception { cn = new CaseNormalizer(); model = Model.of(cn); } @SuppressWarnings("unchecked") @Test public void testPageLoad() { startPage(); tester.assertComponent("form:panel:case", AbstractSingleSelectChoice.class); tester.assertComponent("form:panel:locale", AbstractSingleSelectChoice.class); AbstractSingleSelectChoice<Case> kase = (AbstractSingleSelectChoice<Case>) tester.getComponentFromLastRenderedPage("form:panel:case"); AbstractSingleSelectChoice<Locale> locale = (AbstractSingleSelectChoice<Locale>) tester.getComponentFromLastRenderedPage("form:panel:locale"); assertThat(kase.isNullValid(), is(false)); assertThat(locale.isNullValid(), is(true)); } @SuppressWarnings("unchecked") @Test public void testLoadDefaultValues() { startPage(); AbstractSingleSelectChoice<Case> kase = (AbstractSingleSelectChoice<Case>) tester.getComponentFromLastRenderedPage("form:panel:case"); AbstractSingleSelectChoice<Locale> locale = (AbstractSingleSelectChoice<Locale>) tester.getComponentFromLastRenderedPage("form:panel:locale"); assertThat(kase.getValue(), equalTo("NONE")); assertThat(locale.getValue(), equalTo("")); } @SuppressWarnings("unchecked") @Test public void testLoadSpecifiedValues() { cn = new CaseNormalizer(Case.UPPER, Locale.CANADA); model = Model.of(cn); startPage(); AbstractSingleSelectChoice<Case> kase = (AbstractSingleSelectChoice<Case>) tester.getComponentFromLastRenderedPage("form:panel:case"); AbstractSingleSelectChoice<Locale> locale = (AbstractSingleSelectChoice<Locale>) tester.getComponentFromLastRenderedPage("form:panel:locale"); assertThat(kase.getValue(), equalTo("UPPER")); assertThat(locale.getValue(), equalTo("en_CA")); } @Test public void testChangeFromDefault() { startPage(); FormTester formTester = tester.newFormTester("form"); formTester.setValue("panel:case", "UPPER"); formTester.setValue("panel:locale", "en_CA"); formTester.submit(); assertThat(cn.getCase(), is(Case.UPPER)); assertThat(cn.getConfiguredLocale(), is(Locale.CANADA)); } @Test public void testChange() { cn = new CaseNormalizer(Case.LOWER, Locale.TAIWAN); model = Model.of(cn); startPage(); FormTester formTester = tester.newFormTester("form"); formTester.setValue("panel:case", "UPPER"); formTester.setValue("panel:locale", "en_CA"); formTester.submit(); assertThat(cn.getCase(), is(Case.UPPER)); assertThat(cn.getConfiguredLocale(), is(Locale.CANADA)); } @Test public void testChangeToDefault() { cn = new CaseNormalizer(Case.LOWER, Locale.TAIWAN); model = Model.of(cn); startPage(); FormTester formTester = tester.newFormTester("form"); formTester.setValue("panel:case", "NONE"); formTester.setValue("panel:locale", "-1"); formTester.submit(); assertThat(cn.getCase(), is(Case.NONE)); assertThat(cn.getConfiguredLocale(), nullValue()); assertThat(cn.getLocale(), instanceOf(Locale.class)); } private void startPage() { tester.startPage(new FormTestPage(new ComponentBuilder() { /** serialVersionUID */ private static final long serialVersionUID = 1L; public Component buildComponent(final String id) { return new CaseNormalizerSubform(id, model); } })); } }