package org.geoserver.wms.web.data;
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.data.test.MockData;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.vfny.geoserver.global.GeoserverDataDirectory;
import org.w3c.dom.Document;
public class StyleEditPageTest extends GeoServerWicketTestSupport {
StyleInfo buildingsStyle;
@Override
protected void setUpInternal() throws Exception {
login();
buildingsStyle = getCatalog().getStyleByName(MockData.BUILDINGS.getLocalPart());
StyleEditPage edit = new StyleEditPage(buildingsStyle);
tester.startPage(edit);
// org.geoserver.web.wicket.WicketHierarchyPrinter.print(tester.getLastRenderedPage(), true, false);
}
public void testLoad() throws Exception {
tester.assertRenderedPage(StyleEditPage.class);
tester.assertNoErrorMessage();
tester.assertComponent("form:name", TextField.class);
tester.assertComponent("form:SLD:editorContainer:editor", TextArea.class);
tester.assertModelValue("form:name", "Buildings");
File styleFile = GeoserverDataDirectory.findStyleFile( buildingsStyle.getFilename() );
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document d1 = db.parse( new FileInputStream(styleFile) );
//GEOS-3257, actually drag into xml and compare with xmlunit to avoid
// line ending problems
String xml = tester.getComponentFromLastRenderedPage("form:SLD").getDefaultModelObjectAsString();
xml = xml.replaceAll("<","<").replaceAll(">",">").replaceAll(""", "\"");
Document d2 = db.parse( new ByteArrayInputStream(xml
.getBytes()));
assertXMLEqual(d1, d2);
}
public void testMissingName() throws Exception {
FormTester form = tester.newFormTester("form");
form.setValue("name", "");
form.submit();
tester.assertRenderedPage(StyleEditPage.class);
tester.assertErrorMessages(new String[] {"Field 'Name' is required."});
}
public void testChangeName() throws Exception {
FormTester form = tester.newFormTester("form");
form.setValue("name", "BuildingsNew");
form.submit();
assertNull(getCatalog().getStyleByName("Buildings"));
assertNotNull(getCatalog().getStyleByName("BuildingsNew"));
}
}