0a85bea4c3649cfa364599518d9dfddcf7a20f6b
[rhynodge.git] / src / test / kotlin / net / pterodactylus / rhynodge / triggers / AlwaysTriggerTest.kt
1 package net.pterodactylus.rhynodge.triggers
2
3 import net.pterodactylus.rhynodge.Reaction
4 import net.pterodactylus.rhynodge.State
5 import net.pterodactylus.rhynodge.states.FailedState
6 import net.pterodactylus.rhynodge.states.StateManagerTest.TestState
7 import net.pterodactylus.rhynodge.testAction
8 import net.pterodactylus.rhynodge.testQuery
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.hamcrest.Matchers.sameInstance
12 import org.junit.Test
13
14 class AlwaysTriggerTest {
15
16         @Test
17         fun `merging states returns the current state`() {
18                 assertThat(trigger.mergeStates(previousState, successfulState), sameInstance(successfulState))
19         }
20
21         @Test
22         fun `successful state triggers`() {
23                 trigger.mergeStates(previousState, successfulState)
24                 assertThat(trigger.triggers(), equalTo(true))
25         }
26
27         @Test
28         fun `failed state also triggers`() {
29                 trigger.mergeStates(previousState, failedState)
30                 assertThat(trigger.triggers(), equalTo(true))
31         }
32
33         @Test
34         @Suppress("NonAsciiCharacters")
35         fun `output returns “true” for plain text`() {
36                 trigger.mergeStates(previousState, successfulState)
37                 val output = trigger.output(Reaction("Test", testQuery(), trigger, testAction()))
38                 assertThat(output.text("text/plain"), equalTo("true"))
39         }
40
41         @Test
42         fun `output returns true in a div for html`() {
43                 trigger.mergeStates(previousState, successfulState)
44                 val output = trigger.output(Reaction("Test", testQuery(), trigger, testAction()))
45                 assertThat(output.text("text/html"), equalTo("<div>true</div>"))
46         }
47
48         private val trigger = AlwaysTrigger()
49         private val previousState = TestState()
50         private val successfulState: State = TestState()
51         private val failedState: State = FailedState()
52
53 }