1
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
11
import org .springframework .validation .BindingResult ;
11
12
import org .springframework .validation .Errors ;
12
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
15
import se .citerus .dddsample .infrastructure .persistence .inmemory .CargoRepositoryInMem ;
17
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
+ }
0 commit comments