967a890157d2fd459ed302b5c9b4bf70acdf9d5e
[rhynodge.git] / src / test / kotlin / net / pterodactylus / rhynodge / triggers / NewComicTriggerTest.kt
1 package net.pterodactylus.rhynodge.triggers
2
3 import net.pterodactylus.rhynodge.states.ComicState
4 import net.pterodactylus.rhynodge.states.ComicState.Comic
5 import org.hamcrest.MatcherAssert.assertThat
6 import org.hamcrest.Matchers.contains
7 import org.hamcrest.Matchers.equalTo
8 import org.junit.Test
9
10 class NewComicTriggerTest {
11
12         private val newComicTrigger = NewComicTrigger()
13
14         @Test
15         fun `comic trigger recognizes there are no new comic`() {
16                 val oldComicState = ComicState(generateListOfComics())
17                 val newComicState = ComicState(generateListOfComics())
18                 newComicTrigger.mergeStates(oldComicState, newComicState)
19                 assertThat(newComicTrigger.triggers(), equalTo(false))
20         }
21
22         @Test
23         fun `comic trigger recognizes new comics`() {
24                 val oldComicState = ComicState(generateListOfComics())
25                 val newComicState = ComicState(generateListOfComics().plusElement(Comic("new 1")))
26                 newComicTrigger.mergeStates(oldComicState, newComicState)
27                 assertThat(newComicTrigger.triggers(), equalTo(true))
28         }
29
30         @Test
31         fun `comic trigger does not reorder comics`() {
32                 val oldComicState = ComicState(generateListOfComics())
33                 val newComicState = ComicState(generateListOfComics().plusElement(Comic("new 1")))
34                 val mergedComicState = newComicTrigger.mergeStates(oldComicState, newComicState) as ComicState
35                 assertThat(mergedComicState.comics(), contains(*generateListOfComics().plusElement(Comic("new 1")).toTypedArray()))
36         }
37
38 }
39
40 private fun generateListOfComics(): List<Comic> = (1..40).map { Comic("comic $it") }