/* * Copyright 2004-2012 the original author or authors. * * Licensed 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.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link ViewStateModel}. */ public class ViewStateModelTests extends TestCase { public void testMergeable() { ViewStateModel child = new ViewStateModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { ViewStateModel child = new ViewStateModel("child"); ViewStateModel parent = new ViewStateModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { ViewStateModel child = new ViewStateModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { ViewStateModel child = new ViewStateModel("child"); ViewStateModel parent = new ViewStateModel("parent"); LinkedList<AttributeModel> attributes = new LinkedList<AttributeModel>(); attributes.add(new AttributeModel("foo", "bar")); parent.setAttributes(attributes); BinderModel binder = new BinderModel(); LinkedList<BindingModel> bindings = new LinkedList<BindingModel>(); bindings.add(new BindingModel("foo", "fooConverter", "true")); binder.setBindings(bindings); parent.setBinder(binder); parent.setSecured(new SecuredModel("secured")); parent.setRedirect("true"); parent.setPopup("true"); parent.setModel("fooModel"); parent.setValidationHints("foo"); parent.setView("fooView"); LinkedList<TransitionModel> transitions = new LinkedList<TransitionModel>(); TransitionModel tx = new TransitionModel(); tx.setOn("submit"); tx.setTo("bar"); transitions.add(tx); parent.setTransitions(transitions); EvaluateModel eval = new EvaluateModel("foo.bar"); LinkedList<AbstractActionModel> actions = new LinkedList<AbstractActionModel>(); actions.add(eval); parent.setOnEntryActions(actions); parent.setOnExitActions(actions); parent.setOnRenderActions(actions); LinkedList<VarModel> vars = new LinkedList<VarModel>(); vars.add(new VarModel("foo", "class")); parent.setVars(vars); LinkedList<ExceptionHandlerModel> eh = new LinkedList<ExceptionHandlerModel>(); eh.add(new ExceptionHandlerModel("foo")); parent.setExceptionHandlers(eh); child.merge(parent); assertNotNull(child.getSecured()); assertEquals("true", child.getRedirect()); assertEquals("true", child.getPopup()); assertEquals("fooModel", child.getModel()); assertEquals("foo", child.getValidationHints()); assertEquals("fooView", child.getView()); assertEquals("bar", child.getAttributes().get(0).getValue()); assertEquals("foo", child.getBinder().getBindings().get(0).getProperty()); assertEquals("bar", child.getTransitions().get(0).getTo()); assertEquals("foo.bar", ((EvaluateModel) child.getOnEntryActions().get(0)).getExpression()); assertEquals("foo.bar", ((EvaluateModel) child.getOnExitActions().get(0)).getExpression()); assertEquals("foo.bar", ((EvaluateModel) child.getOnRenderActions().get(0)).getExpression()); assertEquals("foo", child.getVars().get(0).getName()); assertEquals("foo", child.getExceptionHandlers().get(0).getBean()); } }