/* (c) 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.web.data.layer;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.catalog.CoverageView;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.junit.Test;
import javax.xml.namespace.QName;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class CoverageViewEditorTest extends GeoServerWicketTestSupport {
private static QName TIME_RANGES = new QName(MockData.DEFAULT_URI, "timeranges", MockData.DEFAULT_PREFIX);
@Override
protected void onSetUp(SystemTestData testData) throws Exception {
super.onSetUp(testData);
// add raster file to perform some tests
testData.addRasterLayer(TIME_RANGES, "timeranges.zip", null, null, SystemTestData.class, getCatalog());
testData.addDefaultRasterLayer(SystemTestData.TASMANIA_BM, getCatalog());
}
@Test
public void testSingleBandsIndexIsNotVisible() throws Exception {
// perform the login as administrator
login();
// opening the new coverage view page
CoverageViewNewPage newPage = new CoverageViewNewPage(MockData.DEFAULT_PREFIX, "timeranges", null, null);
tester.startPage(newPage);
tester.assertComponent("form:coverages:outputBandsChoice", ListMultipleChoice.class);
// let's see if we have the correct components instantiated
tester.assertComponent("form", Form.class);
tester.assertComponent("form:name", TextField.class);
tester.assertComponent("form:coverages", CoverageViewEditor.class);
tester.assertComponent("form:coverages:coveragesChoice", ListMultipleChoice.class);
tester.assertComponent("form:coverages:outputBandsChoice", ListMultipleChoice.class);
tester.assertComponent("form:coverages:addBand", Button.class);
// check the available bands names without any selected band
CoverageViewEditor coverageViewEditor = (CoverageViewEditor) tester.getComponentFromLastRenderedPage("form:coverages");
coverageViewEditor.setModelObject(null);
ListMultipleChoice availableBands = (ListMultipleChoice) tester.getComponentFromLastRenderedPage("form:coverages:coveragesChoice");
ListMultipleChoice selectedBands = (ListMultipleChoice) tester.getComponentFromLastRenderedPage("form:coverages:outputBandsChoice");
// select the first band
FormTester formTester = tester.newFormTester("form");
formTester.selectMultiple("coverages:coveragesChoice", new int[]{0});
tester.executeAjaxEvent("form:coverages:addBand", "click");
// check that the coverage name contains the band index
assertThat(availableBands.getChoices().size(), is(1));
assertThat(availableBands.getChoices().get(0), is("time_domainsRanges"));
assertThat(selectedBands.getChoices().size(), is(1));
CoverageView.CoverageBand selectedBand = (CoverageView.CoverageBand) selectedBands.getChoices().get(0);
assertThat(selectedBand.getDefinition(), is("time_domainsRanges"));
// set a name and submit
formTester.setValue("name", "bands_index_coverage_test");
formTester.submit("save");
}
@Test
public void testMultiBandsIndexIsVisible() throws Exception {
// perform the login as administrator
login();
// opening the new coverage view page
CoverageViewNewPage newPage = new CoverageViewNewPage(MockData.TASMANIA_BM.getPrefix(), MockData.TASMANIA_BM.getLocalPart(), null, null);
tester.startPage(newPage);
tester.assertComponent("form:coverages:outputBandsChoice", ListMultipleChoice.class);
// check the available bands names without any selected band
CoverageViewEditor coverageViewEditor = (CoverageViewEditor) tester.getComponentFromLastRenderedPage("form:coverages");
coverageViewEditor.setModelObject(null);
ListMultipleChoice availableBands = (ListMultipleChoice) tester.getComponentFromLastRenderedPage("form:coverages:coveragesChoice");
ListMultipleChoice selectedBands = (ListMultipleChoice) tester.getComponentFromLastRenderedPage("form:coverages:outputBandsChoice");
// select the first band
FormTester formTester = tester.newFormTester("form");
formTester.selectMultiple("coverages:coveragesChoice", new int[]{0});
tester.executeAjaxEvent("form:coverages:addBand", "click");
// check that the coverage name contains the band index
assertThat(availableBands.getChoices().size(), is(3));
assertThat(availableBands.getChoices().get(0), is("tazbm@0"));
assertThat(selectedBands.getChoices().size(), is(1));
CoverageView.CoverageBand selectedBand = (CoverageView.CoverageBand) selectedBands.getChoices().get(0);
assertThat(selectedBand.getDefinition(), is("tazbm@0"));
// set a name and submit
formTester.setValue("name", "bands_index_coverage_test");
formTester.submit("save");
}
}