public void setUp() { parentFlow = new Flow("parent"); subflow = new Flow("child"); subflowState = new SubflowState(parentFlow, "subflow", new AbstractGetValueExpression() { public Object getValue(Object context) throws EvaluationException { return subflow; } }); context = new MockRequestControlContext(parentFlow); context.setCurrentState(subflowState); }
public void testOnEventInvalidCurrentState() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState2")); Event event = new Event(this, "submit"); context.setCurrentEvent(event); try { context.setCurrentEvent(event); flow.handleEvent(context); } catch (IllegalStateException e) { } }
public void testOnEventNoTransition() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "bogus"); context.setCurrentEvent(event); try { context.setCurrentEvent(event); flow.handleEvent(context); } catch (NoMatchingTransitionException e) { } }
public void testResume() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); flow.resume(context); assertTrue(context.getFlowScope().getBoolean("renderCalled")); }
public void testFallbackModelValidationMethodInvoked() { Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(model.state1Invoked); assertTrue(model.fallbackInvoked); }
public void testFallbackModelErrorsValidationMethodInvoked() { ErrorsModel model = new ErrorsModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(model.state1Invoked); assertTrue(model.fallbackInvoked); }
public void testStateAndFallbackModelValidationMethodInvoked() { Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(model.state1Invoked); assertTrue(model.fallbackInvoked); }
public void testStateAndFallbackErrorsModelValidationMethodInvoked() { ErrorsModel model = new ErrorsModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(model.state1Invoked); assertTrue(model.fallbackInvoked); }
public void testStateAndFallbackLegacyValidatorInvoked() { LegacyModelValidator validator = new LegacyModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); }
public void testStateAndFallbackErrorsValidatorInvoked() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); }
public void testFallbackValidatorInvoked() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); }
public void testFallbackValidatorInvokedForSubclass() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); }
public void testFallbackErrorsValidatorInvoked() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, this.codesResolver, null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); }
public void testResolveViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); }
public void testOnEvent() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "submit"); context.setCurrentEvent(event); assertTrue(context.getFlowExecutionContext().isActive()); context.setCurrentEvent(event); flow.handleEvent(context); assertTrue(!context.getFlowExecutionContext().isActive()); }
public void testOnEventGlobalTransition() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "globalEvent"); context.setCurrentEvent(event); assertTrue(context.getFlowExecutionContext().isActive()); context.setCurrentEvent(event); flow.handleEvent(context); assertTrue(!context.getFlowExecutionContext().isActive()); }
public void testSetViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); }
public void testSmartValidatorWithClassHint() { ViewState state = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); state.getAttributes().put("validationHints", new StaticExpression(new Object[] { Model.State1.class })); requestContext.setCurrentState(state); LegacyModelValidator validator = new LegacyModelValidator(); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, codesResolver, null); helper.setValidator(validator); helper.validate(); assertTrue(validator.fallbackInvoked); assertTrue(validator.hints.length > 0); assertEquals(Model.State1.class, validator.hints[0]); }
public void testHandleException() { flow.getExceptionHandlerSet().add( new TransitionExecutingFlowExecutionExceptionHandler().add(TestException.class, "myState2")); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); FlowExecutionException e = new FlowExecutionException(flow.getId(), flow.getStartState().getId(), "Oops!", new TestException()); flow.handleException(e, context); assertFalse(context.getFlowExecutionContext().isActive()); }
public void testSmartValidatorWithHintResolution() { ViewState state = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); state.getAttributes().put("validationHints", new StaticExpression("State1")); requestContext.setCurrentState(state); LegacyModelValidator validator = new LegacyModelValidator(); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, codesResolver, null); helper.setValidator(validator); helper.validate(); assertTrue(validator.fallbackInvoked); assertTrue(validator.hints.length > 0); assertEquals(Model.State1.class, validator.hints[0]); }