コード例 #1
0
  /** Tests the workflow method. */
  @Test
  public void testSimpleParameters() throws IOException, ServletException {
    Action action = new Action();

    Map<String, String[]> values = new HashMap<String, String[]>();
    values.put("user.addresses['home'].city", array("Boulder"));
    values.put("user.age", array("32"));
    values.put("user.inches", array("tall"));
    values.put("user.age@dateFormat", array("MM/dd/yyyy"));
    values.put(
        "user.name",
        array("")); // This should be stripped out and the ExpressionEvaluator never called for it

    final HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class);
    EasyMock.expect(request.getParameterMap()).andReturn(values);
    EasyMock.replay(request);

    ExpressionEvaluator expressionEvaluator = EasyMock.createNiceMock(ExpressionEvaluator.class);
    expressionEvaluator.setValue(
        eq("user.addresses['home'].city"),
        same(action),
        aryEq(array("Boulder")),
        eq(new HashMap<String, String>()));
    expressionEvaluator.setValue(
        eq("user.age"), same(action), aryEq(array("32")), eq(map("dateFormat", "MM/dd/yyyy")));
    expressionEvaluator.setValue(
        eq("user.inches"), same(action), aryEq(array("tall")), eq(new HashMap<String, String>()));
    expectLastCall().andThrow(new ConversionException());
    EasyMock.replay(expressionEvaluator);

    ActionInvocation invocation = EasyMock.createStrictMock(ActionInvocation.class);
    EasyMock.expect(invocation.action()).andReturn(action);
    EasyMock.replay(invocation);

    ActionInvocationStore actionInvocationStore =
        EasyMock.createStrictMock(ActionInvocationStore.class);
    EasyMock.expect(actionInvocationStore.getCurrent()).andReturn(invocation);
    EasyMock.replay(actionInvocationStore);

    MessageStore messageStore = EasyMock.createStrictMock(MessageStore.class);
    messageStore.addConversionError(
        eq("user.inches"),
        eq("org.example.domain.Action"),
        eq(new HashMap<String, String>()),
        eq("tall"));
    EasyMock.replay(messageStore);

    WorkflowChain chain = EasyMock.createStrictMock(WorkflowChain.class);
    chain.continueWorkflow();
    EasyMock.replay(chain);

    DefaultParameterWorkflow workflow =
        new DefaultParameterWorkflow(
            request, actionInvocationStore, messageStore, expressionEvaluator);
    workflow.perform(chain);

    EasyMock.verify(
        request, expressionEvaluator, invocation, actionInvocationStore, messageStore, chain);
  }