X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneRescuerTest.kt;h=1fd2553314cd1baebc4025899ebf15f99f4f1138;hb=b7f0567e2a3e88f2327dfdb045a1b0e4bca9dcac;hp=68e08e3cab56ec010dffbd2b4550d830f2e87893;hpb=7d083581b1a8829bf1b5fd07c09244f241e04ffb;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 index 68e08e3..1fd2553 100644 --- a/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/core/SoneRescuerTest.kt @@ -5,12 +5,12 @@ 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 +import kotlin.test.Test /** * Unit test for [SoneRescuer]. @@ -67,40 +67,55 @@ class SoneRescuerTest { @Test fun successfulInsert() { val fetchedSone = mock() - returnUriOnInsert(fetchedSone) + 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) + 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?) { - val keyWithMetaStrings = setupFreenetUri() + private fun returnUriOnInsert(fetchedSone: Sone?, edition: Long) { + val keyWithMetaStrings = setupFreenetUri(edition) doAnswer { soneRescuer.stop() fetchedSone - }.`when`(soneDownloader).fetchSone(eq(sone), eq(keyWithMetaStrings), eq(true)) + }.whenever(soneDownloader).fetchSone(eq(sone), eq(keyWithMetaStrings), eq(true)) } - private fun setupFreenetUri(): FreenetURI { + 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-" + (currentEdition - 1)))).thenReturn(keyWithDocName) + whenever(sskKey.setDocName(eq("Sone-" + edition))).thenReturn(keyWithDocName) whenever(sone.requestUri.setKeyType(eq("SSK"))).thenReturn(sskKey) return keyWithMetaStrings }