Sfoglia il codice sorgente

Fixed CargoTrackingControllerTest

Dan Eidmark 11 anni fa
parent
commit
035a36bdea

+ 61
- 89
src/test/java/se/citerus/dddsample/interfaces/tracking/CargoTrackingControllerTest.java Vedi File

1
 package se.citerus.dddsample.interfaces.tracking;
1
 package se.citerus.dddsample.interfaces.tracking;
2
 
2
 
3
-import junit.framework.TestCase;
4
-import org.easymock.EasyMock;
5
-import org.springframework.context.support.StaticApplicationContext;
6
-import org.springframework.mock.web.MockHttpServletRequest;
7
-import org.springframework.mock.web.MockHttpServletResponse;
8
-import org.springframework.mock.web.MockHttpSession;
9
-import org.springframework.mock.web.MockServletContext;
3
+import org.junit.Before;
4
+import org.junit.Test;
5
+import org.junit.runner.RunWith;
6
+import org.springframework.test.context.ContextConfiguration;
7
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
8
+import org.springframework.test.context.web.WebAppConfiguration;
9
+import org.springframework.test.web.servlet.MockMvc;
10
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
10
 import org.springframework.validation.BindingResult;
11
 import org.springframework.validation.BindingResult;
11
 import org.springframework.validation.Errors;
12
 import org.springframework.validation.Errors;
12
 import org.springframework.validation.FieldError;
13
 import org.springframework.validation.FieldError;
13
-import org.springframework.web.servlet.ModelAndView;
14
-import se.citerus.dddsample.domain.model.cargo.CargoRepository;
15
-import se.citerus.dddsample.domain.model.handling.HandlingEventRepository;
14
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
16
 import se.citerus.dddsample.infrastructure.persistence.inmemory.CargoRepositoryInMem;
15
 import se.citerus.dddsample.infrastructure.persistence.inmemory.CargoRepositoryInMem;
17
 import se.citerus.dddsample.infrastructure.persistence.inmemory.HandlingEventRepositoryInMem;
16
 import se.citerus.dddsample.infrastructure.persistence.inmemory.HandlingEventRepositoryInMem;
18
 
17
 
19
-/*public class CargoTrackingControllerTest extends TestCase {
20
-  CargoTrackingController controller;
21
-  MockHttpServletRequest request;
22
-  MockHttpServletResponse response;
23
-  MockHttpSession session;
24
-  MockServletContext servletContext;
25
-  CargoRepositoryInMem cargoRepository;
26
-  HandlingEventRepository handlingEventRepository;
27
-
28
-  protected void setUp() throws Exception {
29
-    servletContext = new MockServletContext("test");
30
-    request = new MockHttpServletRequest(servletContext);
31
-    response = new MockHttpServletResponse();
32
-    session = new MockHttpSession(servletContext);
33
-    request.setSession(session);
34
-
35
-    controller = new CargoTrackingController();
36
-    StaticApplicationContext applicationContext = new StaticApplicationContext();
37
-    controller.setApplicationContext(applicationContext);
38
-    controller.setFormView("test-form");
39
-    controller.setSuccessView("test-success");
40
-    controller.setCommandName("test-command-name");
41
-    cargoRepository = new CargoRepositoryInMem();
42
-    cargoRepository.setHandlingEventRepository(new HandlingEventRepositoryInMem());
43
-    cargoRepository.init();
44
-
45
-    handlingEventRepository = new HandlingEventRepositoryInMem();
46
-    controller.setHandlingEventRepository(handlingEventRepository);
47
-  }
48
-
49
-  public void testHandleGet() throws Exception {
50
-    controller.setCargoRepository(new CargoRepositoryInMem());
51
-    request.setMethod("GET");
52
-
53
-    ModelAndView mav = controller.handleRequest(request, response);
54
-
55
-    assertEquals("test-form", mav.getViewName());
56
-    assertEquals(2, mav.getModel().size());
57
-    assertTrue(mav.getModel().get("test-command-name") instanceof TrackCommand);
58
-  }
59
-
60
-  public void testHandlePost() throws Exception {
61
-    controller.setCargoRepository(cargoRepository);
62
-    request.addParameter("trackingId", "ABC");
63
-    request.setMethod("POST");
64
-
65
-    ModelAndView mav = controller.handleRequest(request, response);
66
-
67
-    assertEquals("test-form", mav.getViewName());
68
-    // Errors, command are two standard map attributes, the third should be the cargo object
69
-    assertEquals(3, mav.getModel().size());
70
-    CargoTrackingViewAdapter cargo = (CargoTrackingViewAdapter) mav.getModel().get("cargo");
71
-    assertEquals("ABC", cargo.getTrackingId());
72
-  }
73
-
74
-  public void testUnknownCargo() throws Exception {
75
-    CargoRepository cargoRepository = EasyMock.createNiceMock(CargoRepository.class);
76
-    EasyMock.replay(cargoRepository);
77
-    controller.setCargoRepository(cargoRepository);
78
-    
79
-    request.setMethod("POST");
80
-    request.setParameter("trackingId", "unknown-id");
81
-
82
-    ModelAndView mav = controller.handleRequest(request, response);
83
-
84
-    assertEquals("test-form", mav.getViewName());
85
-    assertEquals(2, mav.getModel().size());
86
-
87
-    TrackCommand command = (TrackCommand) mav.getModel().get(controller.getCommandName());
88
-    assertEquals("unknown-id", command.getTrackingId());
89
-
90
-    Errors errors = (Errors) mav.getModel().get(BindingResult.MODEL_KEY_PREFIX + controller.getCommandName());
91
-    FieldError fe = errors.getFieldError("trackingId");
92
-    assertEquals("cargo.unknown_id", fe.getCode());
93
-    assertEquals(1, fe.getArguments().length);
94
-    assertEquals(command.getTrackingId(), fe.getArguments()[0]);
95
-  }
96
-
97
-}*/
18
+import java.util.Map;
19
+
20
+import static org.junit.Assert.assertEquals;
21
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
22
+
23
+
24
+@RunWith(SpringJUnit4ClassRunner.class)
25
+@WebAppConfiguration
26
+@ContextConfiguration(classes = CargoTrackingControllerTest.TestConfiguration.class)
27
+public class CargoTrackingControllerTest {
28
+    public static class TestConfiguration {
29
+
30
+    }
31
+
32
+    private MockMvc mockMvc;
33
+
34
+    @Before
35
+    public void setup() throws Exception {
36
+        CargoRepositoryInMem cargoRepository = new CargoRepositoryInMem();
37
+        cargoRepository.setHandlingEventRepository(new HandlingEventRepositoryInMem());
38
+        cargoRepository.init();
39
+
40
+        CargoTrackingController controller = new CargoTrackingController();
41
+        controller.setCargoRepository(cargoRepository);
42
+        controller.setHandlingEventRepository(new HandlingEventRepositoryInMem());
43
+
44
+        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
45
+        resolver.setPrefix("/jsp/");
46
+        resolver.setSuffix(".jsp");
47
+        this.mockMvc = MockMvcBuilders.standaloneSetup(controller).setViewResolvers(resolver).build();
48
+    }
49
+
50
+    @Test
51
+    public void canGetCargo() throws Exception {
52
+        String trackingId = "ABC";
53
+        Map<String, Object> model = mockMvc.perform(post("/track").param("trackingId", trackingId)).andReturn().getModelAndView().getModel();
54
+        CargoTrackingViewAdapter cargoTrackingViewAdapter = (CargoTrackingViewAdapter) model.get("cargo");
55
+        assertEquals(trackingId, cargoTrackingViewAdapter.getTrackingId());
56
+    }
57
+
58
+    @Test
59
+    public void cannnotGetUnknownCargo() throws Exception {
60
+        String trackingId = "UNKNOWN";
61
+        Map<String, Object> model = mockMvc.perform(post("/track").param("trackingId", trackingId)).andReturn().getModelAndView().getModel();
62
+        Errors errors = (Errors) model.get(BindingResult.MODEL_KEY_PREFIX + "trackCommand");
63
+        FieldError fe = errors.getFieldError("trackingId");
64
+        assertEquals("cargo.unknown_id", fe.getCode());
65
+        assertEquals(1, fe.getArguments().length);
66
+        assertEquals(trackingId, fe.getArguments()[0]);
67
+    }
68
+
69
+}