0a34d2657567f92c07b1bbe6ba280b98cb423d7c
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / core / ImageInserterTest.kt
1 package net.pterodactylus.sone.core
2
3 import net.pterodactylus.sone.core.FreenetInterface.InsertToken
4 import net.pterodactylus.sone.core.FreenetInterface.InsertTokenSupplier
5 import net.pterodactylus.sone.data.Image
6 import net.pterodactylus.sone.data.TemporaryImage
7 import net.pterodactylus.sone.test.mock
8 import net.pterodactylus.sone.test.whenever
9 import org.junit.Test
10 import org.mockito.ArgumentMatchers.any
11 import org.mockito.ArgumentMatchers.eq
12 import org.mockito.Mockito.doThrow
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
15
16 /**
17  * Unit test for [ImageInserter].
18  */
19 class ImageInserterTest {
20
21         private val temporaryImage = mock<TemporaryImage>().apply { whenever(id).thenReturn("image-id") }
22         private val image = mock<Image>().apply { whenever(id).thenReturn("image-id") }
23         private val freenetInterface = mock<FreenetInterface>()
24         private val insertToken = mock<InsertToken>()
25         private val insertTokenSupplier: InsertTokenSupplier = mock<InsertTokenSupplier>().apply { whenever(apply(any())).thenReturn(insertToken) }
26         private val imageInserter = ImageInserter(freenetInterface, insertTokenSupplier)
27
28         @Test
29         fun `inserter inserts image`() {
30                 imageInserter.insertImage(temporaryImage, image)
31                 verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
32         }
33
34         @Test
35         fun `exception when inserting image is ignored`() {
36                 doThrow(SoneException::class.java).`when`(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
37                 imageInserter.insertImage(temporaryImage, image)
38                 verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java))
39         }
40
41         @Test
42         fun `cancelling image insert that is not running does nothing`() {
43                 imageInserter.cancelImageInsert(image)
44                 verify(insertToken, never()).cancel()
45         }
46
47         @Test
48         fun `cancelling image cancels the insert token`() {
49                 imageInserter.insertImage(temporaryImage, image)
50                 imageInserter.cancelImageInsert(image)
51                 verify(insertToken).cancel()
52         }
53
54 }