X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FImageInserterTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FImageInserterTest.kt;h=0a34d2657567f92c07b1bbe6ba280b98cb423d7c;hb=60d34bd23ab1c8f86a8246ead6136bbbfd44bcb0;hp=0000000000000000000000000000000000000000;hpb=298e23049639ddbfc3e50507ed6e4bed990f2789;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/core/ImageInserterTest.kt b/src/test/kotlin/net/pterodactylus/sone/core/ImageInserterTest.kt new file mode 100644 index 0000000..0a34d26 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/core/ImageInserterTest.kt @@ -0,0 +1,54 @@ +package net.pterodactylus.sone.core + +import net.pterodactylus.sone.core.FreenetInterface.InsertToken +import net.pterodactylus.sone.core.FreenetInterface.InsertTokenSupplier +import net.pterodactylus.sone.data.Image +import net.pterodactylus.sone.data.TemporaryImage +import net.pterodactylus.sone.test.mock +import net.pterodactylus.sone.test.whenever +import org.junit.Test +import org.mockito.ArgumentMatchers.any +import org.mockito.ArgumentMatchers.eq +import org.mockito.Mockito.doThrow +import org.mockito.Mockito.never +import org.mockito.Mockito.verify + +/** + * Unit test for [ImageInserter]. + */ +class ImageInserterTest { + + private val temporaryImage = mock().apply { whenever(id).thenReturn("image-id") } + private val image = mock().apply { whenever(id).thenReturn("image-id") } + private val freenetInterface = mock() + private val insertToken = mock() + private val insertTokenSupplier: InsertTokenSupplier = mock().apply { whenever(apply(any())).thenReturn(insertToken) } + private val imageInserter = ImageInserter(freenetInterface, insertTokenSupplier) + + @Test + fun `inserter inserts image`() { + imageInserter.insertImage(temporaryImage, image) + verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java)) + } + + @Test + fun `exception when inserting image is ignored`() { + doThrow(SoneException::class.java).`when`(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java)) + imageInserter.insertImage(temporaryImage, image) + verify(freenetInterface).insertImage(eq(temporaryImage), eq(image), any(InsertToken::class.java)) + } + + @Test + fun `cancelling image insert that is not running does nothing`() { + imageInserter.cancelImageInsert(image) + verify(insertToken, never()).cancel() + } + + @Test + fun `cancelling image cancels the insert token`() { + imageInserter.insertImage(temporaryImage, image) + imageInserter.cancelImageInsert(image) + verify(insertToken).cancel() + } + +}