CargoTrackingControllerTest.java 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package se.citerus.dddsample.interfaces.tracking;
  2. import org.junit.Before;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.test.context.ContextConfiguration;
  6. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  7. import org.springframework.test.context.web.WebAppConfiguration;
  8. import org.springframework.test.web.servlet.MockMvc;
  9. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  10. import org.springframework.validation.BindingResult;
  11. import org.springframework.validation.Errors;
  12. import org.springframework.validation.FieldError;
  13. import org.springframework.web.servlet.view.InternalResourceViewResolver;
  14. import se.citerus.dddsample.infrastructure.persistence.inmemory.CargoRepositoryInMem;
  15. import se.citerus.dddsample.infrastructure.persistence.inmemory.HandlingEventRepositoryInMem;
  16. import java.util.Map;
  17. import static org.assertj.core.api.Assertions.assertThat;
  18. import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
  19. @RunWith(SpringJUnit4ClassRunner.class)
  20. @WebAppConfiguration
  21. @ContextConfiguration(classes = CargoTrackingControllerTest.TestConfiguration.class)
  22. public class CargoTrackingControllerTest {
  23. public static class TestConfiguration {
  24. }
  25. private MockMvc mockMvc;
  26. @Before
  27. public void setup() throws Exception {
  28. CargoRepositoryInMem cargoRepository = new CargoRepositoryInMem();
  29. cargoRepository.setHandlingEventRepository(new HandlingEventRepositoryInMem());
  30. cargoRepository.init();
  31. CargoTrackingController controller = new CargoTrackingController();
  32. controller.setCargoRepository(cargoRepository);
  33. controller.setHandlingEventRepository(new HandlingEventRepositoryInMem());
  34. InternalResourceViewResolver resolver = new InternalResourceViewResolver();
  35. resolver.setPrefix("/jsp/");
  36. resolver.setSuffix(".jsp");
  37. this.mockMvc = MockMvcBuilders.standaloneSetup(controller).setViewResolvers(resolver).build();
  38. }
  39. @Test
  40. public void canGetCargo() throws Exception {
  41. String trackingId = "ABC";
  42. Map<String, Object> model = mockMvc.perform(post("/track").param("trackingId", trackingId)).andReturn().getModelAndView().getModel();
  43. CargoTrackingViewAdapter cargoTrackingViewAdapter = (CargoTrackingViewAdapter) model.get("cargo");
  44. assertThat(cargoTrackingViewAdapter.getTrackingId()).isEqualTo(trackingId);
  45. }
  46. @Test
  47. public void cannnotGetUnknownCargo() throws Exception {
  48. String trackingId = "UNKNOWN";
  49. Map<String, Object> model = mockMvc.perform(post("/track").param("trackingId", trackingId)).andReturn().getModelAndView().getModel();
  50. Errors errors = (Errors) model.get(BindingResult.MODEL_KEY_PREFIX + "trackCommand");
  51. FieldError fe = errors.getFieldError("trackingId");
  52. assertThat(fe.getCode()).isEqualTo("cargo.unknown_id");
  53. assertThat(fe.getArguments().length).isEqualTo(1);
  54. assertThat(fe.getArguments()[0]).isEqualTo(trackingId);
  55. }
  56. }