/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.demo;
import static org.junit.Assert.assertEquals;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.markup.html.form.ValidationErrorFeedback;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.web.wicket.ParamResourceModel;
import org.junit.Test;
public class ReprojectPageTest extends GeoServerWicketTestSupport {
@Override
protected void setUpTestData(SystemTestData testData) throws Exception {
// we don't need data configured in the catalog
testData.setUpSecurity();
}
@Test
public void testReprojectPoint() {
tester.startPage(ReprojectPage.class);
FormTester form = tester.newFormTester("form");
form.setValue("sourceCRS:srs", "EPSG:4326");
form.setValue("targetCRS:srs", "EPSG:32632");
form.setValue("sourceGeom", "12 45");
form.submit();
tester.clickLink("form:forward", true);
assertEquals(ReprojectPage.class, tester.getLastRenderedPage().getClass());
assertEquals(0, tester.getMessages(FeedbackMessage.ERROR).size());
String tx = tester.getComponentFromLastRenderedPage("form:targetGeom").getDefaultModelObjectAsString();
assertEquals("736446.0261038465 4987329.504699742", tx);
}
@Test
public void testInvalidPoint() {
tester.startPage(ReprojectPage.class);
FormTester form = tester.newFormTester("form");
form.setValue("sourceCRS:srs", "EPSG:4326");
form.setValue("targetCRS:srs", "EPSG:32632");
form.setValue("sourceGeom", "12 a45a");
form.submit();
tester.clickLink("form:forward", true);
assertEquals(ReprojectPage.class, tester.getLastRenderedPage().getClass());
assertEquals(1, tester.getMessages(FeedbackMessage.ERROR).size());
String message = ((ValidationErrorFeedback) tester.getMessages(FeedbackMessage.ERROR).get(0)).getMessage().toString();
String expected = new ParamResourceModel("GeometryTextArea.parseError", null).getString();
assertEquals(expected, message);
}
@Test
public void testReprojectLinestring() {
tester.startPage(ReprojectPage.class);
FormTester form = tester.newFormTester("form");
form.setValue("sourceCRS:srs", "EPSG:4326");
form.setValue("targetCRS:srs", "EPSG:32632");
form.setValue("sourceGeom", "LINESTRING(12 45, 13 45)");
form.submit();
tester.clickLink("form:forward", true);
assertEquals(ReprojectPage.class, tester.getLastRenderedPage().getClass());
assertEquals(0, tester.getMessages(FeedbackMessage.ERROR).size());
String tx = tester.getComponentFromLastRenderedPage("form:targetGeom").getDefaultModelObjectAsString();
assertEquals("LINESTRING (736446.0261038465 4987329.504699742, 815261.4271666661 4990738.261612577)", tx);
}
@Test
public void testInvalidGeometry() {
tester.startPage(ReprojectPage.class);
FormTester form = tester.newFormTester("form");
form.setValue("sourceCRS:srs", "EPSG:4326");
form.setValue("targetCRS:srs", "EPSG:32632");
form.setValue("sourceGeom", "LINESTRING(12 45, 13 45"); // missing ) at the end
form.submit();
tester.clickLink("form:forward", true);
assertEquals(ReprojectPage.class, tester.getLastRenderedPage().getClass());
assertEquals(1, tester.getMessages(FeedbackMessage.ERROR).size());
String message = ((ValidationErrorFeedback) tester.getMessages(FeedbackMessage.ERROR).get(0)).getMessage().toString();
String expected = new ParamResourceModel("GeometryTextArea.parseError", null).getString();
assertEquals(expected, message);
}
@Test
public void testPageParams() {
tester.startPage(ReprojectPage.class, new PageParameters().add("fromSRS", "EPSG:4326").add("toSRS", "EPSG:32632"));
String source = tester.getComponentFromLastRenderedPage("form:sourceCRS:srs").getDefaultModelObjectAsString();
String target = tester.getComponentFromLastRenderedPage("form:targetCRS:srs").getDefaultModelObjectAsString();
assertEquals("EPSG:4326", source);
assertEquals("EPSG:32632", target);
}
}