Package org.apache.struts.chain.commands.generic

Source Code of org.apache.struts.chain.commands.generic.TestCopyFormToContext

/*
* $Id: TestCopyFormToContext.java 471754 2006-11-06 14:55:09Z husted $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.struts.chain.commands.generic;

import junit.framework.TestCase;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.chain.contexts.MockActionContext;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.FormPropertyConfig;
import org.apache.struts.config.impl.ModuleConfigImpl;
import org.apache.struts.mock.MockFormBean;

/**
* @version $Id: TestCopyFormToContext.java 161516 2005-04-15 19:22:47Z
*          germuska $
*/
public class TestCopyFormToContext extends TestCase {
    private static final String POST_EXECUTION_CONTEXT_KEY = "afterTest";
    private MockActionContext context = null;

    public static void main(String[] args) {
        junit.textui.TestRunner.run(TestCopyFormToContext.class);
    }

    /*
     * @see TestCase#setUp()
     */
    protected void setUp() throws Exception {
        context = new MockActionContext();

        ModuleConfigImpl moduleConfig = new ModuleConfigImpl("/");

        context.setModuleConfig(moduleConfig);

        FormBeanConfig fooFBC = new FormBeanConfig();

        fooFBC.setName("foo");
        fooFBC.setType("org.apache.struts.mock.MockFormBean");
        moduleConfig.addFormBeanConfig(fooFBC);

        FormBeanConfig barFBC = new FormBeanConfig();

        barFBC.setName("bar");
        barFBC.setType("org.apache.struts.action.DynaActionForm"); // use a different type so we can verify lookups better

        FormPropertyConfig fpc = new FormPropertyConfig();

        fpc.setName("property");
        fpc.setType("java.lang.String");
        fpc.setInitial("test");
        barFBC.addFormPropertyConfig(fpc);
        moduleConfig.addFormBeanConfig(barFBC);

        ActionConfig testActionConfig = new ActionConfig();

        testActionConfig.setPath("/Test");
        testActionConfig.setName("foo");
        testActionConfig.setScope("request");
        moduleConfig.addActionConfig(testActionConfig);

        moduleConfig.freeze(); // otherwise, ActionConfigMatcher will be null and we'll get an NPE...
    }

    public void testLookupByNameAndRequestScope()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();
        String formName = "foo";

        command.setFormName(formName);
        command.setScope("request");
        command.setToKey(POST_EXECUTION_CONTEXT_KEY);

        assertNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        command.execute(context);

        assertNotNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNotNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        assertSame(context.get(POST_EXECUTION_CONTEXT_KEY),
            context.getRequestScope().get(formName));

        ActionForm theForm =
            (ActionForm) context.get(POST_EXECUTION_CONTEXT_KEY);

        assertTrue(theForm instanceof MockFormBean);
    }

    public void testLookupByActionPath()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();

        command.setActionPath("/Test");
        command.setToKey(POST_EXECUTION_CONTEXT_KEY);

        String formName = "foo"; // we know this, even though it's not being used for the lookup.

        assertNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        command.execute(context);

        assertNotNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNotNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        assertSame(context.get(POST_EXECUTION_CONTEXT_KEY),
            context.getRequestScope().get(formName));

        ActionForm theForm =
            (ActionForm) context.get(POST_EXECUTION_CONTEXT_KEY);

        assertTrue(theForm instanceof MockFormBean);
    }

    public void testLookupByNameAndSessionScope()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();
        String formName = "bar";

        command.setFormName(formName);
        command.setScope("session");
        command.setToKey(POST_EXECUTION_CONTEXT_KEY);

        assertNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        command.execute(context);

        assertNotNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNotNull(context.getSessionScope().get(formName));

        assertSame(context.get(POST_EXECUTION_CONTEXT_KEY),
            context.getSessionScope().get(formName));

        ActionForm theForm =
            (ActionForm) context.get(POST_EXECUTION_CONTEXT_KEY);

        assertTrue(theForm instanceof DynaActionForm);

        DynaActionForm dForm = (DynaActionForm) theForm;

        assertEquals("test", dForm.get("property"));
    }

    public void testExceptionHandlingWithNullFormName()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();
        String formName = "bar";

        // skip setting form name to test exception
        // command.setFormName(formName);
        command.setScope("session");
        command.setToKey(POST_EXECUTION_CONTEXT_KEY);

        assertNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        try {
            command.execute(context);
            fail(
                "Execution should throw an exception when form name is not set.");
        } catch (IllegalStateException e) {
            ; // expected.
        }
    }

    public void testExceptionHandlingWithNullEverything()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();
        String formName = "bar";

        // skip setting form name to test exception
        // command.setFormName(formName);
        // command.setScope("session");
        // command.setToKey(POST_EXECUTION_CONTEXT_KEY);
        assertNull(context.get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        try {
            command.execute(context);
            fail(
                "Execution should throw an exception when no properties are set.");
        } catch (IllegalStateException e) {
            ; // expected.
        }
    }

    public void testCopyToDefaultContextKey()
        throws Exception {
        CopyFormToContext command = new CopyFormToContext();
        String formName = "foo";

        command.setFormName(formName);
        command.setScope("request");

        assertNull(context.getActionForm());
        assertNull(context.getRequestScope().get(POST_EXECUTION_CONTEXT_KEY));
        assertNull(context.getSessionScope().get(POST_EXECUTION_CONTEXT_KEY));

        command.execute(context);

        assertNotNull(context.getActionForm());
        assertNotNull(context.getRequestScope().get(formName));
        assertNull(context.getSessionScope().get(formName));

        assertSame(context.getActionForm(),
            context.getRequestScope().get(formName));

        ActionForm theForm = (ActionForm) context.getActionForm();

        assertTrue(theForm instanceof MockFormBean);
    }
}
TOP

Related Classes of org.apache.struts.chain.commands.generic.TestCopyFormToContext

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.