Przeglądaj źródła

Test for CargoTrackingController.

Set command class in controller constructor, since it's tightly coupled to code, not configurable.

Use assertEquals in repository test, making it pass.

Added spring-test jar to pom.

No logfile appender in test-logging.
peter_backlund 19 lat temu
rodzic
commit
ea736af6e8

+ 6
- 0
dddsample/pom.xml Wyświetl plik

99
       <version>2.5</version>
99
       <version>2.5</version>
100
     </dependency>
100
     </dependency>
101
     <dependency>
101
     <dependency>
102
+      <groupId>org.springframework</groupId>
103
+      <artifactId>spring-test</artifactId>
104
+      <version>2.5</version>
105
+      <scope>test</scope>
106
+    </dependency>
107
+    <dependency>
102
       <groupId>org.hibernate</groupId>
108
       <groupId>org.hibernate</groupId>
103
       <artifactId>hibernate</artifactId>
109
       <artifactId>hibernate</artifactId>
104
       <version>3.2.5.ga</version>
110
       <version>3.2.5.ga</version>

+ 4
- 0
dddsample/src/main/java/se/citerus/dddsample/web/CargoTrackingController.java Wyświetl plik

20
    */
20
    */
21
   private CargoService cargoService;
21
   private CargoService cargoService;
22
 
22
 
23
+  public CargoTrackingController() {
24
+    setCommandClass(TrackCommand.class);
25
+  }
26
+
23
   @Override
27
   @Override
24
   public ModelAndView onSubmit(final Object command) throws ServletException {
28
   public ModelAndView onSubmit(final Object command) throws ServletException {
25
     final Map<String, Object> model = new HashMap<String, Object>();
29
     final Map<String, Object> model = new HashMap<String, Object>();

+ 5
- 6
dddsample/src/main/webapp/WEB-INF/dispatch-servlet.xml Wyświetl plik

1
 <?xml version="1.0" encoding="UTF-8"?>
1
 <?xml version="1.0" encoding="UTF-8"?>
2
 <beans xmlns="http://www.springframework.org/schema/beans"
2
 <beans xmlns="http://www.springframework.org/schema/beans"
3
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
-  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
3
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
5
 
5
 
6
   <bean name="/start.html" class="se.citerus.dddsample.web.CargoTrackingController">
6
   <bean name="/start.html" class="se.citerus.dddsample.web.CargoTrackingController">
7
     <property name="sessionForm" value="true"/>
7
     <property name="sessionForm" value="true"/>
8
     <property name="commandName" value="trackCommand"/>
8
     <property name="commandName" value="trackCommand"/>
9
-    <property name="commandClass" value="se.citerus.dddsample.web.TrackCommand"/>
10
     <property name="formView" value="start"/>
9
     <property name="formView" value="start"/>
11
     <property name="successView" value="cargo"/>
10
     <property name="successView" value="cargo"/>
12
     <property name="cargoService" ref="cargoService"/>
11
     <property name="cargoService" ref="cargoService"/>
13
   </bean>
12
   </bean>
14
 
13
 
15
   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
14
   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
16
-    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
17
-    <property name="prefix" value="/WEB-INF/jsp/"></property>
18
-    <property name="suffix" value=".jsp"></property>
15
+    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
16
+    <property name="prefix" value="/WEB-INF/jsp/"/>
17
+    <property name="suffix" value=".jsp"/>
19
   </bean>
18
   </bean>
20
 
19
 
21
 </beans>
20
 </beans>

+ 1
- 1
dddsample/src/test/java/se/citerus/dddsample/domain/CargoRepositoryTest.java Wyświetl plik

19
     final TrackingId trackingId = new TrackingId("XYZ");
19
     final TrackingId trackingId = new TrackingId("XYZ");
20
     Cargo cargo = cargoRepository.find(trackingId);
20
     Cargo cargo = cargoRepository.find(trackingId);
21
 
21
 
22
-    assertSame(trackingId, cargo.trackingId());
22
+    assertEquals(trackingId, cargo.trackingId());
23
   }
23
   }
24
 
24
 
25
 }
25
 }

+ 64
- 0
dddsample/src/test/java/se/citerus/dddsample/web/CargoTrackingControllerTest.java Wyświetl plik

1
+package se.citerus.dddsample.web;
2
+
3
+import junit.framework.TestCase;
4
+import org.springframework.mock.web.MockHttpServletRequest;
5
+import org.springframework.mock.web.MockHttpServletResponse;
6
+import org.springframework.mock.web.MockHttpSession;
7
+import org.springframework.mock.web.MockServletContext;
8
+import org.springframework.web.servlet.ModelAndView;
9
+import se.citerus.dddsample.domain.Cargo;
10
+import se.citerus.dddsample.domain.Location;
11
+import se.citerus.dddsample.domain.TrackingId;
12
+import se.citerus.dddsample.service.CargoService;
13
+
14
+public class CargoTrackingControllerTest extends TestCase {
15
+
16
+  CargoTrackingController controller;
17
+  MockHttpServletRequest request;
18
+  MockHttpServletResponse response;
19
+  MockHttpSession session;
20
+  MockServletContext servletContext;
21
+
22
+  protected void setUp() throws Exception {
23
+    servletContext = new MockServletContext("test");
24
+    request = new MockHttpServletRequest(servletContext);
25
+    response = new MockHttpServletResponse();
26
+    session = new MockHttpSession(servletContext);
27
+    request.setSession(session);
28
+    controller = new CargoTrackingController();
29
+    controller.setFormView("test-form");
30
+    controller.setSuccessView("test-success");
31
+    controller.setCommandName("test-command-name");
32
+    controller.setCargoService(new CargoService() {
33
+      public Cargo find(String trackingId) {
34
+        Cargo cargo = new Cargo(
35
+          new TrackingId(trackingId),
36
+          new Location("AAA"),
37
+          new Location("BBB"));
38
+        return cargo;
39
+      }
40
+    });
41
+  }
42
+
43
+  public void testHandleGet() throws Exception {
44
+    request.setMethod("GET");
45
+
46
+    ModelAndView mav = controller.handleRequest(request, response);
47
+
48
+    assertEquals("test-form", mav.getViewName());
49
+    assertEquals(2, mav.getModel().size());
50
+    assertTrue(mav.getModel().get("test-command-name") instanceof TrackCommand);
51
+  }
52
+
53
+  public void testHandlePost() throws Exception {
54
+    request.setMethod("POST");
55
+
56
+    ModelAndView mav = controller.handleRequest(request, response);
57
+
58
+    assertEquals("test-success", mav.getViewName());
59
+    assertEquals(1, mav.getModel().size());
60
+    Location location = (Location) mav.getModel().get("location");
61
+    assertEquals("AAA", location.unlocode());
62
+  }
63
+
64
+}

+ 1
- 1
dddsample/src/test/resources/log4j.properties Wyświetl plik

1
 # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
1
 # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
2
 # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
2
 # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
3
-log4j.rootLogger=INFO, stdout, logfile
3
+log4j.rootLogger=INFO, stdout
4
 
4
 
5
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
5
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
6
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout