/* (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.wicket;
import static org.junit.Assert.*;
import java.io.Serializable;
import org.apache.wicket.Session;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geotools.referencing.CRS;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.junit.Test;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
public class CRSPanelTest extends GeoServerWicketTestSupport {
@Test
public void testStandloneUnset() throws Exception {
tester.startPage( new CRSPanelTestPage() );
tester.assertComponent( "form", Form.class );
tester.assertComponent( "form:crs", CRSPanel.class );
FormTester ft = tester.newFormTester( "form");
ft.submit();
CRSPanel crsPanel = (CRSPanel) tester.getComponentFromLastRenderedPage( "form:crs");
assertNull( crsPanel.getCRS() );
}
@Test
public void testStandaloneUnchanged() throws Exception {
CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
tester.startPage( new CRSPanelTestPage( crs ) );
// print(new CRSPanelTestPage(crs), true, true);
tester.assertComponent( "form", Form.class );
tester.assertComponent( "form:crs", CRSPanel.class );
FormTester ft = tester.newFormTester("form", false);
ft.submit();
CRSPanel crsPanel = (CRSPanel) tester.getComponentFromLastRenderedPage( "form:crs");
assertTrue(CRS.equalsIgnoreMetadata(DefaultGeographicCRS.WGS84, crsPanel.getCRS()));
}
@Test
public void testPopupWindow() throws Exception {
CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
tester.startPage( new CRSPanelTestPage( crs ) );
ModalWindow window = (ModalWindow) tester.getComponentFromLastRenderedPage("form:crs:popup");
assertFalse(window.isShown());
tester.clickLink("form:crs:wkt", true);
assertTrue(window.isShown());
tester.assertModelValue("form:crs:popup:content:wkt", crs.toWKT());
}
@Test
public void testPopupWindowNoCRS() throws Exception {
// see GEOS-3207
tester.startPage( new CRSPanelTestPage() );
ModalWindow window = (ModalWindow) tester.getComponentFromLastRenderedPage("form:crs:popup");
assertFalse(window.isShown());
GeoServerAjaxFormLink link = (GeoServerAjaxFormLink) tester.getComponentFromLastRenderedPage("form:crs:wkt");
assertFalse(link.isEnabled());
}
@Test
public void testStandaloneChanged() throws Exception {
CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
tester.startPage( new CRSPanelTestPage( crs ) );
TextField srs = (TextField) tester.getComponentFromLastRenderedPage( "form:crs:srs");
srs.setModelObject( "EPSG:3005");
FormTester ft = tester.newFormTester("form", false);
ft.submit();
CRSPanel crsPanel = (CRSPanel) tester.getComponentFromLastRenderedPage( "form:crs");
assertTrue(CRS.equalsIgnoreMetadata(CRS.decode("EPSG:3005"), crsPanel.getCRS()));
}
public void testStandaloneChanged2() throws Exception {
CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
tester.startPage(new CRSPanelTestPage(crs));
// write down the text, submit the form
FormTester ft = tester.newFormTester("form");
ft.setValue("form:crs:srs", "EPSG:3005");
ft.submit();
CRSPanel crsPanel = (CRSPanel) tester.getComponentFromLastRenderedPage("form:crs");
assertEquals(CRS.decode("EPSG:3005"), crsPanel.getCRS());
}
@Test
public void testRequired() throws Exception {
tester.startPage( new CRSPanelTestPage( (CoordinateReferenceSystem) null ) );
CRSPanel panel = (CRSPanel) tester.getComponentFromLastRenderedPage("form:crs");
panel.setRequired(true);
FormTester ft = tester.newFormTester( "form");
ft.submit();
assertEquals(1, panel.getFeedbackMessages().size());
// System.out.println(Session.get().getFeedbackMessages().messageForComponent(panel));
}
@Test
public void testCompoundPropertyUnchanged() throws Exception {
Foo foo = new Foo( DefaultGeographicCRS.WGS84 );
tester.startPage( new CRSPanelTestPage( foo ));
tester.assertComponent( "form", Form.class );
tester.assertComponent( "form:crs", CRSPanel.class );
FormTester ft = tester.newFormTester( "form");
ft.submit();
assertEquals( CRS.decode("EPSG:4326"), foo.crs );
}
@Test
public void testCompoundPropertyChanged() throws Exception {
Foo foo = new Foo( DefaultGeographicCRS.WGS84 );
tester.startPage( new CRSPanelTestPage( foo ));
TextField srs = (TextField) tester.getComponentFromLastRenderedPage( "form:crs:srs");
srs.setModelObject( "EPSG:3005");
FormTester ft = tester.newFormTester( "form");
ft.submit();
assertEquals( CRS.decode("EPSG:3005"), foo.crs );
}
@Test
public void testPropertyUnchanged() throws Exception {
Foo foo = new Foo( DefaultGeographicCRS.WGS84 );
tester.startPage( new CRSPanelTestPage( new PropertyModel( foo, "crs") ));
tester.assertComponent( "form", Form.class );
tester.assertComponent( "form:crs", CRSPanel.class );
FormTester ft = tester.newFormTester( "form");
ft.submit();
assertEquals( CRS.decode("EPSG:4326"), foo.crs );
}
@Test
public void testPropertyChanged() throws Exception {
Foo foo = new Foo( DefaultGeographicCRS.WGS84 );
tester.startPage( new CRSPanelTestPage( new PropertyModel( foo, "crs" ) ));
TextField srs = (TextField) tester.getComponentFromLastRenderedPage( "form:crs:srs");
srs.setModelObject( "EPSG:3005");
FormTester ft = tester.newFormTester( "form");
ft.submit();
assertEquals( CRS.decode("EPSG:3005"), foo.crs );
}
static class Foo implements Serializable {
public CoordinateReferenceSystem crs;
Foo( CoordinateReferenceSystem crs ) {
this.crs = crs;
}
}
}