Package com.example.bookstore.web.controller

Source Code of com.example.bookstore.web.controller.CreateOrderTest

package com.example.bookstore.web.controller;

import org.mockito.Mockito;
import org.mockito.internal.verification.VerificationModeFactory;
import org.springframework.binding.mapping.Mapper;
import org.springframework.binding.mapping.MappingResults;
import org.springframework.webflow.config.FlowDefinitionResource;
import org.springframework.webflow.config.FlowDefinitionResourceFactory;
import org.springframework.webflow.core.collection.LocalAttributeMap;
import org.springframework.webflow.core.collection.MutableAttributeMap;
import org.springframework.webflow.engine.EndState;
import org.springframework.webflow.engine.Flow;
import org.springframework.webflow.test.MockExternalContext;
import org.springframework.webflow.test.MockFlowBuilderContext;
import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests;

public class CreateOrderTest extends AbstractXmlFlowExecutionTests {

    private OrderController orderController;

  protected void setUp() {
    orderController = Mockito.mock(OrderController.class);
  }

  @Override
  protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
    builderContext.registerBean("orderController", orderController);
  }
 
  @Override
  protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
    return resourceFactory.createFileResource("src/main/webapp/WEB-INF/view/public/createOrders/createOrders-flow.xml");
  }

  public void testStartCreateOrderFlow() {

    MutableAttributeMap input = new LocalAttributeMap();
    MockExternalContext context = new MockExternalContext();
    startFlow(input, context);

    Mockito.verify(orderController, VerificationModeFactory.times(1)).initializeForm();
    Mockito.verify(orderController, VerificationModeFactory.times(1)).initializeSelectableCategories();

    assertCurrentStateEquals("selectCategory");
    assertResponseWrittenEquals("selectCategory", context);
  }

  public void testSelectCategory_Next() {
    setCurrentState("selectCategory");
    OrderForm orderForm = createTestOrderForm();
    getFlowScope().put("orderForm", orderForm);

    MockExternalContext context = new MockExternalContext();
    context.setEventId("next");
    resumeFlow(context);
    Mockito.verify(orderController, VerificationModeFactory.times(1)).initializeSelectableBooks(orderForm);
    assertCurrentStateEquals("selectBooks");
    assertResponseWrittenEquals("selectBooks", context);
  }
 
  public void testSelectCategory_Cancel() {
    setCurrentState("selectCategory");
    getFlowScope().put("orderForm", createTestOrderForm());

    MockExternalContext context = new MockExternalContext();
    context.setEventId("cancel");
    resumeFlow(context);

    assertFlowExecutionEnded();
  }

  public void testSelectBook_AddAndNext() {
    setCurrentState("selectBooks");
    OrderForm orderForm = createTestOrderForm();
    getFlowScope().put("orderForm", orderForm);

    MockExternalContext context = new MockExternalContext();
    context.setEventId("add");
    resumeFlow(context);

    //Assert if book was saved
        Mockito.verify(orderController, VerificationModeFactory.times(1)).addBook(orderForm);

    context.setEventId("next");
    resumeFlow(context);   
  }

 
  public void testSelectDeliveryOptions_AddAndNext() {
    setCurrentState("selectDeliveryOptions");
    getFlowScope().put("orderForm", createTestOrderForm());
    getFlowDefinitionRegistry().registerFlowDefinition(createMockBookingSubflow());
   
    MockExternalContext context = new MockExternalContext();
    context.setEventId("finish");
    resumeFlow(context);
  }

  private Flow createMockBookingSubflow() {
      Flow mockBookingFlow = new Flow("secured/placeOrders");
      mockBookingFlow.setInputMapper(new Mapper() {
          public MappingResults map(Object source, Object target) {
              // assert that 1L was passed in as input
              return null;
          }
      });
      // immediately return the bookingConfirmed outcome so the caller can respond
      new EndState(mockBookingFlow, "endOrderOk");
      return mockBookingFlow;
  }

  private OrderForm createTestOrderForm() {
    OrderForm orderForm = new OrderForm();
    return orderForm;
  }
}
TOP

Related Classes of com.example.bookstore.web.controller.CreateOrderTest

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.