🎨 Reduce mocking of albums and images
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / template / ImageAccessorTest.kt
1 package net.pterodactylus.sone.template
2
3 import net.pterodactylus.sone.data.impl.*
4 import org.hamcrest.MatcherAssert.assertThat
5 import org.hamcrest.Matchers.equalTo
6 import org.hamcrest.Matchers.nullValue
7 import org.junit.Test
8
9 /**
10  * Unit test for [ImageAccessor].
11  */
12 class ImageAccessorTest {
13
14         private val accessor = ImageAccessor()
15
16         @Test
17         fun `accessor returns next image for first image`() {
18                 assertThat(accessor.get(null, images[0], "next"), equalTo<Any>(images[1]))
19         }
20
21         @Test
22         fun `accessor returns null for next image of second image`() {
23                 assertThat(accessor.get(null, images[1], "next"), nullValue())
24         }
25
26         @Test
27         fun `accessor returns previous image for second image`() {
28                 assertThat(accessor.get(null, images[1], "previous"), equalTo<Any>(images[0]))
29         }
30
31         @Test
32         fun `accessor returns null for previous image of first image`() {
33                 assertThat(accessor.get(null, images[0], "previous"), nullValue())
34         }
35
36         @Test
37         fun `accessor uses reflection accessor for all other members`() {
38                 assertThat(accessor.get(null, images[0], "hashCode"), equalTo<Any>(images[0].hashCode()))
39         }
40
41 }
42
43 private val sone = IdOnlySone("sone")
44 private val album = AlbumImpl(sone)
45 private val images = listOf(ImageImpl().modify().setSone(sone).update(), ImageImpl().modify().setSone(sone).update()).onEach(album::addImage)