X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneRescuerTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneRescuerTest.kt;h=0000000000000000000000000000000000000000;hp=a74b874a4e848735065c6287c660ca67e6d36a25;hb=d50730f6a330439e0e7ef97ca9329dffe72d5640;hpb=97fe04482ebb8a08e43294acde041c2975cbd8ee diff --git a/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt b/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt deleted file mode 100644 index a74b874..0000000 --- a/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt +++ /dev/null @@ -1,112 +0,0 @@ -package net.pterodactylus.sone.core - -import freenet.keys.* -import net.pterodactylus.sone.data.* -import net.pterodactylus.sone.test.* -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.equalTo -import org.junit.* -import org.mockito.ArgumentMatchers.any -import org.mockito.ArgumentMatchers.eq -import org.mockito.Mockito.doAnswer -import org.mockito.Mockito.never -import org.mockito.Mockito.verify - -/** - * Unit test for [SoneRescuer]. - */ -class SoneRescuerTest { - - private val core = mock() - private val soneDownloader = mock() - private val sone = mock().apply { - val soneUri = mock() - whenever(soneUri.edition).thenReturn(currentEdition) - whenever(requestUri).thenReturn(soneUri) - } - private val soneRescuer = SoneRescuer(core, soneDownloader, sone) - - @Test - fun newSoneRescuerIsNotFetchingAnything() { - assertThat(soneRescuer.isFetching, equalTo(false)) - } - - @Test - fun newSoneRescuerStartsAtCurrentEditionOfSone() { - assertThat(soneRescuer.currentEdition, equalTo(currentEdition)) - } - - @Test - fun newSoneRescuerHasANextEditionToGet() { - assertThat(soneRescuer.hasNextEdition(), equalTo(true)) - } - - @Test - fun soneRescuerDoesNotHaveANextEditionIfCurrentEditionIsZero() { - whenever(sone.requestUri.edition).thenReturn(0L) - val soneRescuer = SoneRescuer(core, soneDownloader, sone) - assertThat(soneRescuer.hasNextEdition(), equalTo(false)) - } - - @Test - fun nextEditionIsOneSmallerThanTheCurrentEdition() { - assertThat(soneRescuer.nextEdition, equalTo(currentEdition - 1)) - } - - @Test - fun lastFetchOfANewSoneRescuerWasSuccessful() { - assertThat(soneRescuer.isLastFetchSuccessful, equalTo(true)) - } - - @Test - fun mainLoopStopsWhenItShould() { - soneRescuer.stop() - soneRescuer.serviceRun() - } - - @Test - fun successfulInsert() { - val fetchedSone = mock() - returnUriOnInsert(fetchedSone) - soneRescuer.startNextFetch() - soneRescuer.serviceRun() - verify(core).lockSone(eq(sone)) - verify(core).updateSone(eq(fetchedSone), eq(true)) - assertThat(soneRescuer.isLastFetchSuccessful, equalTo(true)) - assertThat(soneRescuer.isFetching, equalTo(false)) - assertThat(soneRescuer.currentEdition, equalTo(currentEdition - 1)) - } - - @Test - fun nonSuccessfulInsertIsRecognized() { - returnUriOnInsert(null) - soneRescuer.startNextFetch() - soneRescuer.serviceRun() - verify(core).lockSone(eq(sone)) - verify(core, never()).updateSone(any(Sone::class.java), eq(true)) - assertThat(soneRescuer.isLastFetchSuccessful, equalTo(false)) - assertThat(soneRescuer.isFetching, equalTo(false)) - assertThat(soneRescuer.currentEdition, equalTo(currentEdition)) - } - - private fun returnUriOnInsert(fetchedSone: Sone?) { - val keyWithMetaStrings = setupFreenetUri() - doAnswer { - soneRescuer.stop() - fetchedSone - }.`when`(soneDownloader).fetchSone(eq(sone), eq(keyWithMetaStrings), eq(true)) - } - - private fun setupFreenetUri(): FreenetURI { - val sskKey = mock() - val keyWithDocName = mock() - val keyWithMetaStrings = mock() - whenever(keyWithDocName.setMetaString(eq(arrayOf("sone.xml")))).thenReturn(keyWithMetaStrings) - whenever(sskKey.setDocName(eq("Sone-" + (currentEdition - 1)))).thenReturn(keyWithDocName) - whenever(sone.requestUri.setKeyType(eq("SSK"))).thenReturn(sskKey) - return keyWithMetaStrings - } - -} - -private const val currentEdition = 12L