package org.geoserver.wms.web.data;
import java.io.FileReader;
import org.apache.commons.io.IOUtils;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.util.file.File;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.web.GeoServerWicketTestSupport;
public class StyleNewPageTest extends GeoServerWicketTestSupport {
@Override
protected void setUpInternal() throws Exception {
login();
tester.startPage(StyleNewPage.class);
// org.geoserver.web.wicket.WicketHierarchyPrinter.print(tester.getLastRenderedPage(), true, false);
}
public void testLoad() throws Exception {
tester.assertRenderedPage(StyleNewPage.class);
tester.assertNoErrorMessage();
tester.assertComponent("form:name", TextField.class);
tester.assertComponent("form:SLD:editorContainer:editor", TextArea.class);
tester.assertComponent("uploadForm:filename", FileUploadField.class);
tester.assertModelValue("form:name", null);
}
public void testUpload() throws Exception {
FormTester upload = tester.newFormTester("uploadForm");
File styleFile = new File(new java.io.File(getClass().getResource("default_point.sld").toURI()));
String sld = IOUtils.toString(new FileReader(styleFile)).replaceAll("\r\n", "\n").replaceAll("\r", "\n");
upload.setFile("filename", styleFile, "application/xml");
upload.submit();
tester.assertRenderedPage(StyleNewPage.class);
tester.assertModelValue("form:SLD", sld);
}
public void testMissingName() throws Exception {
FormTester form = tester.newFormTester("form");
File styleFile = new File(new java.io.File(getClass().getResource("default_point.sld").toURI()));
String sld = IOUtils.toString(new FileReader(styleFile)).replaceAll("\r\n", "\n").replaceAll("\r", "\n");
form.setValue("SLD:editorContainer:editor", sld);
form.submit();
tester.assertRenderedPage(StyleNewPage.class);
tester.assertErrorMessages(new String[] {"Field 'Name' is required."});
}
public void testMissingStyle() throws Exception {
FormTester form = tester.newFormTester("form");
form.setValue("name", "test");
form.submit();
tester.assertRenderedPage(StyleNewPage.class);
tester.assertErrorMessages(new String[] {"Field 'SLD' is required."});
}
public void testNewStyle() throws Exception {
FormTester form = tester.newFormTester("form");
File styleFile = new File(new java.io.File(getClass().getResource("default_point.sld").toURI()));
String sld = IOUtils.toString(new FileReader(styleFile)).replaceAll("\r\n", "\n").replaceAll("\r", "\n");
form.setValue("SLD:editorContainer:editor", sld);
form.setValue("name", "test");
form.submit();
tester.assertRenderedPage(StylePage.class);
assertNotNull(getCatalog().getStyleByName("test"));
}
// Cannot make this one to work, the sld text area is not filled in the test
// and I don't understand why, in the real world it is
// public void testValidate() throws Exception {
// tester.clickLink("form:sld:validate", false);
//
// tester.assertRenderedPage(StyleNewPage.class);
// tester.assertErrorMessages(new String[] {"Invalid style"});
// }
}