X-Git-Url: https://git.pterodactylus.net/?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;hb=91e2eb453b5ad6345cb3587e7cc6326b6c3831f0;hp=1fd2553314cd1baebc4025899ebf15f99f4f1138;hpb=f4f21f18add10c6a1c95f70faf851f06920dc77b;p=Sone.git 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 1fd2553..0000000 --- a/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt +++ /dev/null @@ -1,125 +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.mockito.ArgumentMatchers.any -import org.mockito.ArgumentMatchers.eq -import org.mockito.Mockito.doAnswer -import org.mockito.Mockito.never -import org.mockito.Mockito.verify -import kotlin.test.Test - -/** - * 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, currentEdition - 1) - 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 `starting fetch with skipping one edition skips one edition`() { - val fetchedSone = mock() - returnUriOnInsert(fetchedSone, currentEdition - 2) - soneRescuer.startNextFetchWithSkip() - 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 - 2)) - } - - @Test - fun nonSuccessfulInsertIsRecognized() { - returnUriOnInsert(null, (currentEdition - 1)) - 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?, edition: Long) { - val keyWithMetaStrings = setupFreenetUri(edition) - doAnswer { - soneRescuer.stop() - fetchedSone - }.whenever(soneDownloader).fetchSone(eq(sone), eq(keyWithMetaStrings), eq(true)) - } - - private fun setupFreenetUri(edition: Long): FreenetURI { - val sskKey = mock() - val keyWithDocName = mock() - val keyWithMetaStrings = mock() - whenever(keyWithDocName.setMetaString(eq(arrayOf("sone.xml")))).thenReturn(keyWithMetaStrings) - whenever(sskKey.setDocName(eq("Sone-" + edition))).thenReturn(keyWithDocName) - whenever(sone.requestUri.setKeyType(eq("SSK"))).thenReturn(sskKey) - return keyWithMetaStrings - } - -} - -private const val currentEdition = 12L