+++ /dev/null
-package net.pterodactylus.rhynodge.webpages.weather.wettercom
-
-import net.pterodactylus.rhynodge.Reaction
-import net.pterodactylus.rhynodge.webpages.weather.HourState
-import net.pterodactylus.rhynodge.webpages.weather.WindDirection
-import org.hamcrest.MatcherAssert.assertThat
-import org.hamcrest.Matchers.`is`
-import org.hamcrest.Matchers.containsString
-import org.junit.Test
-import org.mockito.Mockito
-import java.time.ZoneId
-import java.time.ZonedDateTime
-
-/**
- * Unit test for [WetterComTrigger].
-
- * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
- */
-class WetterComTriggerTest {
-
- private val trigger = WetterComTrigger()
- private val now = ZonedDateTime.now()
- private val previousState = WetterComState(now)
-
- @Test
- fun equalStatesAreNotMerged() {
- val currentState = WetterComState(now)
- val newState = trigger.mergeStates(previousState, currentState) as WetterComState
- assertThat(newState, `is`(previousState))
- assertThat(newState, `is`(currentState))
- }
-
- @Test
- fun currentStateIsReturnedIfDifferentFromPreviousState() {
- val currentState = WetterComState(now.minusDays(1))
- val newState = trigger.mergeStates(previousState, currentState) as WetterComState
- assertThat(newState, `is`(currentState))
- }
-
- @Test
- fun mergingEqualStatesDoesNotTrigger() {
- val currentState = WetterComState(now)
- trigger.mergeStates(previousState, currentState) as WetterComState
- assertThat(trigger.triggers(), `is`(false))
- }
-
- @Test
- fun mergingDifferentStatesDoesTrigger() {
- val currentState = WetterComState(now.minusDays(1))
- trigger.mergeStates(previousState, currentState) as WetterComState
- assertThat(trigger.triggers(), `is`(true))
- }
-
- @Test
- fun outputSummaryContainsCorrectDate() {
- val currentState = WetterComState(ZonedDateTime.of(2000, 1, 1, 5, 0, 0, 0, ZoneId.of("Europe/Berlin")))
- trigger.mergeStates(previousState, currentState) as WetterComState
- val reaction = Mockito.mock(Reaction::class.java)
- val output = trigger.output(reaction)
- assertThat(output.summary(), `is`("The weather (according to wetter.com) on January 1, 2000"))
- }
-
- @Test
- fun outputHtmlContainsHourStates() {
- val currentState = WetterComState(now.minusDays(1))
- currentState += HourState(0, 10, null, 0.11, 12.0, WindDirection.NORTH, 13, null, null, "Rain", "http://1")
- currentState += HourState(1, 14, null, 0.15, 16.0, WindDirection.SOUTH, 17, null, null, "Sun", "http://2")
- trigger.mergeStates(previousState, currentState) as WetterComState
- val reaction = Mockito.mock(Reaction::class.java)
- val output = trigger.output(reaction)
- val htmlText = output.text("text/html", -1)
- assertThat(htmlText, containsString("10 °C"))
- assertThat(htmlText, containsString("11%"))
- assertThat(htmlText, containsString("12 l/m"))
- assertThat(htmlText, containsString("13 km/h"))
- assertThat(htmlText, containsString("Rain"))
- assertThat(htmlText, containsString("http://1"))
- assertThat(htmlText, containsString("14 °C"))
- assertThat(htmlText, containsString("15%"))
- assertThat(htmlText, containsString("16 l/m"))
- assertThat(htmlText, containsString("17 km/h"))
- assertThat(htmlText, containsString("Sun"))
- assertThat(htmlText, containsString("http://2"))
- }
-
-}