Quellcode durchsuchen

Need to specify time zone for tests to avoid tz dependent tests. Using server JVM's tz is probably not reasonable for the actual view either, but we'll leave that as is for now.

patrikfr Patrik Fredriksson vor 11 Jahren
Ursprung
Commit
dad1b542df

+ 25
- 9
src/main/java/se/citerus/dddsample/interfaces/tracking/CargoTrackingViewAdapter.java Datei anzeigen

@@ -21,8 +21,9 @@ public final class CargoTrackingViewAdapter {
21 21
   private final Locale locale;
22 22
   private final List<HandlingEventViewAdapter> events;
23 23
   private final String FORMAT = "yyyy-MM-dd hh:mm";
24
+  private final TimeZone timeZone;
24 25
 
25
-  /**
26
+    /**
26 27
    * Constructor.
27 28
    *
28 29
    * @param cargo
@@ -31,15 +32,28 @@ public final class CargoTrackingViewAdapter {
31 32
    * @param handlingEvents
32 33
    */
33 34
   public CargoTrackingViewAdapter(Cargo cargo, MessageSource messageSource, Locale locale, List<HandlingEvent> handlingEvents) {
34
-    this.messageSource = messageSource;
35
-    this.locale = locale;
36
-    this.cargo = cargo;
35
+    this(cargo, messageSource, locale, handlingEvents, TimeZone.getDefault());
36
+  }
37 37
 
38
-    this.events = new ArrayList<HandlingEventViewAdapter>(handlingEvents.size());
39
-    for (HandlingEvent handlingEvent : handlingEvents) {
40
-      events.add(new HandlingEventViewAdapter(handlingEvent));
38
+    /**
39
+     * Constructor.
40
+     *
41
+     * @param cargo
42
+     * @param messageSource
43
+     * @param locale
44
+     * @param handlingEvents
45
+     */
46
+    public CargoTrackingViewAdapter(Cargo cargo, MessageSource messageSource, Locale locale, List<HandlingEvent> handlingEvents, TimeZone tz) {
47
+      this.messageSource = messageSource;
48
+      this.locale = locale;
49
+      this.cargo = cargo;
50
+      this.timeZone = tz;
51
+
52
+      this.events = new ArrayList<HandlingEventViewAdapter>(handlingEvents.size());
53
+        for (HandlingEvent handlingEvent : handlingEvents) {
54
+          events.add(new HandlingEventViewAdapter(handlingEvent));
55
+        }
41 56
     }
42
-  }
43 57
 
44 58
   /**
45 59
    * @param location a location
@@ -165,7 +179,9 @@ public final class CargoTrackingViewAdapter {
165 179
      * @return Time when the event was completed.
166 180
      */
167 181
     public String getTime() {
168
-      return new SimpleDateFormat(FORMAT).format(handlingEvent.completionTime());
182
+      final SimpleDateFormat sdf = new SimpleDateFormat(FORMAT);
183
+      sdf.setTimeZone(timeZone);
184
+      return sdf.format(handlingEvent.completionTime());
169 185
     }
170 186
 
171 187
     /**

+ 1
- 1
src/test/java/se/citerus/dddsample/interfaces/tracking/CargoTrackingViewAdapterTest.java Datei anzeigen

@@ -30,7 +30,7 @@ public class CargoTrackingViewAdapterTest extends TestCase {
30 30
     applicationContext.addMessage("cargo.status.IN_PORT", Locale.GERMAN, "In port {0}");
31 31
     applicationContext.refresh();
32 32
 
33
-    CargoTrackingViewAdapter adapter = new CargoTrackingViewAdapter(cargo, applicationContext, Locale.GERMAN, events);
33
+    CargoTrackingViewAdapter adapter = new CargoTrackingViewAdapter(cargo, applicationContext, Locale.GERMAN, events, TimeZone.getTimeZone("Europe/Stockholm"));
34 34
 
35 35
     assertEquals("XYZ", adapter.getTrackingId());
36 36
     assertEquals("Hangzhou", adapter.getOrigin());