Move WindDirection to parent package
[rhynodge.git] / src / test / kotlin / net / pterodactylus / rhynodge / webpages / weather / wettercom / WetterComStateTest.kt
index c67b82b..93667ea 100644 (file)
@@ -1,5 +1,7 @@
 package net.pterodactylus.rhynodge.webpages.weather.wettercom
 
+import com.fasterxml.jackson.databind.ObjectMapper
+import net.pterodactylus.rhynodge.webpages.weather.WindDirection
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.`is`
 import org.junit.Test
@@ -16,7 +18,7 @@ class WetterComStateTest {
 
     @Test
     fun statesWithoutHoursEqualOneAnother() {
-        val now = Instant.now().atZone(ZoneId.of("UTC"))
+        val now = Instant.now().atZone(ZoneId.of("Europe/Berlin"))
         val firstState = WetterComState(ZonedDateTime.from(now))
         val secondState = WetterComState(ZonedDateTime.from(now))
         assertThat(firstState, `is`(secondState))
@@ -24,7 +26,7 @@ class WetterComStateTest {
 
     @Test
     fun statesWithTheSameHoursAreEqual() {
-        val now = Instant.now().atZone(ZoneId.of("UTC"))
+        val now = Instant.now().atZone(ZoneId.of("Europe/Berlin"))
         val firstState = WetterComState(ZonedDateTime.from(now))
         firstState.addHour(HourState(0, 10.0, 0.05, 0.0, WindDirection.NORTH, 5.0, "Fine", "http://1"))
         firstState.addHour(HourState(1, 12.0, 0.1, 2.0, WindDirection.WEST, 8.0, "Superb", "http://2"))
@@ -34,4 +36,26 @@ class WetterComStateTest {
         assertThat(firstState, `is`(secondState))
     }
 
+    @Test
+    fun iteratingDeliversHourStates() {
+        val now = Instant.now().atZone(ZoneId.of("Europe/Berlin"))
+        val firstState = WetterComState(ZonedDateTime.from(now))
+        firstState.addHour(HourState(0, 10.0, 0.05, 0.0, WindDirection.NORTH, 5.0, "Fine", "http://1"))
+        firstState.addHour(HourState(1, 12.0, 0.1, 2.0, WindDirection.WEST, 8.0, "Superb", "http://2"))
+        assertThat(firstState.iterator().asSequence().toList(), `is`(firstState.hours as Iterable<HourState>))
+    }
+
+    @Test
+    fun stateIsSerializableAsJson() {
+        val objectMapper = ObjectMapper()
+        val now = Instant.now().atZone(ZoneId.of("Europe/Berlin"))
+        val originalState = WetterComState(ZonedDateTime.from(now))
+        originalState.addHour(HourState(0, 10.0, 0.05, 0.0, WindDirection.NORTH, 5.0, "Fine", "http://1"))
+        originalState.addHour(HourState(1, 12.0, 0.1, 2.0, WindDirection.WEST, 8.0, "Superb", "http://2"))
+        val json = objectMapper.writeValueAsString(originalState)
+        println(json)
+        val parsedState = objectMapper.readValue(json, WetterComState::class.java)
+        assertThat(parsedState, `is`(originalState))
+    }
+
 }