Package org.geoserver.web.demo

Source Code of org.geoserver.web.demo.DemoRequestsPageTest

/* Copyright (c) 2001 - 2009 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.demo;

import java.io.File;
import java.util.Arrays;
import java.util.List;

import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.web.demo.DemoRequestsPage.DemoRequest;
import org.geotools.test.TestData;

/**
*
* @author Gabriel Roldan
* @verion $Id: DemoRequestsPageTest.java 13789 2009-12-11 15:05:56Z groldan $
*/
public class DemoRequestsPageTest extends GeoServerWicketTestSupport {

    private File demoDir;

    @Override
    protected void setUpInternal() throws Exception {
        demoDir = TestData.file(this, "demo-requests");
        tester.startPage(new DemoRequestsPage(demoDir));
    }

    /**
     * Kind of smoke test to make sure the page structure was correctly set up once loaded
     */
    public void testStructure() {
        // print(tester.getLastRenderedPage(), true, true);

        assertTrue(tester.getLastRenderedPage() instanceof DemoRequestsPage);

        tester.assertComponent("demoRequestsForm", Form.class);
        tester.assertComponent("demoRequestsForm:demoRequestsList", DropDownChoice.class);
        tester.assertComponent("demoRequestsForm:url", TextField.class);
        tester.assertComponent("demoRequestsForm:body", TextArea.class);
        tester.assertComponent("demoRequestsForm:username", TextField.class);
        tester.assertComponent("demoRequestsForm:password", PasswordTextField.class);
        tester.assertComponent("demoRequestsForm:submit", AjaxSubmitLink.class);

        tester.assertComponent("responseWindow", ModalWindow.class);
    }

    @SuppressWarnings("unchecked")
    public void testDemoListLoaded() {
        // print(tester.getLastRenderedPage(), true, true);

        /*
         * Expected choices are the file names in the demo requests dir
         * (/src/test/resources/test-data/demo-requests in this case)
         */
        final List<String> expectedList = Arrays.asList(new String[] { "WFS_getFeature-1.1.xml",
                "WMS_describeLayer.url" });

        DropDownChoice dropDown = (DropDownChoice) tester
                .getComponentFromLastRenderedPage("demoRequestsForm:demoRequestsList");
        List choices = dropDown.getChoices();
        assertEquals(expectedList, choices);
    }

    public void testUrlLinkUnmodified() {
        // print(tester.getLastRenderedPage(), true, true);

        final FormTester requestFormTester = tester.newFormTester("demoRequestsForm");

        final String requestName = "WMS_describeLayer.url";
        requestFormTester.select("demoRequestsList", 1);

        /*
         * There's an AjaxFormSubmitBehavior attached to onchange so force it
         */
        tester.executeAjaxEvent("demoRequestsForm:demoRequestsList", "onchange");
       
        tester.assertModelValue("demoRequestsForm:demoRequestsList", requestName);

        final boolean isAjax = true;
        tester.clickLink("demoRequestsForm:submit", isAjax);

        tester.assertVisible("responseWindow");

        IModel model = tester.getLastRenderedPage().getModel();
        assertTrue(model.getObject() instanceof DemoRequest);
        DemoRequest req = (DemoRequest) model.getObject();

        assertEquals(demoDir, req.getDemoDir());
        String requestFileName = req.getRequestFileName();
        String requestUrl = req.getRequestUrl();
        String requestBody = req.getRequestBody();

        assertEquals(requestName, requestFileName);
        assertNotNull(requestUrl);
        assertNull(requestBody);
    }

    public void testUrlLinkSelected() {
        // print(tester.getLastRenderedPage(), true, true);

        final FormTester requestFormTester = tester.newFormTester("demoRequestsForm");

        final String requestName = "WMS_describeLayer.url";

        requestFormTester.select("demoRequestsList", 1);
       
        /*
         * There's an AjaxFormSubmitBehavior attached to onchange so force it
         */
        tester.executeAjaxEvent("demoRequestsForm:demoRequestsList", "onchange");
       
       
        tester.assertModelValue("demoRequestsForm:demoRequestsList", requestName);

        final boolean isAjax = true;
        tester.clickLink("demoRequestsForm:submit", isAjax);

        tester.assertVisible("responseWindow");

        IModel model = tester.getLastRenderedPage().getModel();
        assertTrue(model.getObject() instanceof DemoRequest);
        DemoRequest req = (DemoRequest) model.getObject();

        assertEquals(demoDir, req.getDemoDir());
        String requestFileName = req.getRequestFileName();
        String requestUrl = req.getRequestUrl();
        String requestBody = req.getRequestBody();

        assertEquals(requestName, requestFileName);
        assertNotNull(requestUrl);
        assertNull(requestBody);
    }

    public void testUrlLinkModified() {
        // print(tester.getLastRenderedPage(), true, true);

        final FormTester requestFormTester = tester.newFormTester("demoRequestsForm");

        final String requestName = "WMS_describeLayer.url";

        requestFormTester.select("demoRequestsList", 1);
       
        /*
         * There's an AjaxFormSubmitBehavior attached to onchange so force it
         */
        tester.executeAjaxEvent("demoRequestsForm:demoRequestsList", "onchange");

        tester.assertModelValue("demoRequestsForm:demoRequestsList", requestName);

        final String modifiedUrl = "http://modified/url";

        TextField url = (TextField) tester.getComponentFromLastRenderedPage("demoRequestsForm:url");
        url.setModelValue(new String[] { modifiedUrl });

        assertEquals(modifiedUrl, url.getValue());

        final boolean isAjax = true;
        tester.clickLink("demoRequestsForm:submit", isAjax);

        tester.assertVisible("responseWindow");

        IModel model = tester.getLastRenderedPage().getModel();
        assertTrue(model.getObject() instanceof DemoRequest);
        DemoRequest req = (DemoRequest) model.getObject();

        String requestUrl = req.getRequestUrl();
        assertEquals(modifiedUrl, requestUrl);
    }

}
TOP

Related Classes of org.geoserver.web.demo.DemoRequestsPageTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.