X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneInserterTest.java;h=c44ced600ce91eae3c661d5a12c8ab7fcdddf6f1;hb=b2b444224f9ad00d75bf58d07efb554dbdcb4226;hp=28ead149cd318f21e4bc1db389111ba00d20fa48;hpb=2b47186b72e30460a6710f95a76e4a99c305909a;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java b/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java index 28ead14..c44ced6 100644 --- a/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java +++ b/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java @@ -2,6 +2,7 @@ package net.pterodactylus.sone.core; import static com.google.common.base.Optional.absent; import static com.google.common.base.Optional.of; +import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.instanceOf; @@ -11,6 +12,7 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -20,7 +22,7 @@ import static org.mockito.Mockito.when; import java.util.HashMap; import net.pterodactylus.sone.core.SoneInserter.InsertInformation; -import net.pterodactylus.sone.core.SoneInserter.SetInsertionDelay; +import net.pterodactylus.sone.core.event.InsertionDelayChangedEvent; import net.pterodactylus.sone.core.event.SoneEvent; import net.pterodactylus.sone.core.event.SoneInsertAbortedEvent; import net.pterodactylus.sone.core.event.SoneInsertedEvent; @@ -31,6 +33,7 @@ import net.pterodactylus.sone.data.Sone; import freenet.keys.FreenetURI; import com.google.common.base.Optional; +import com.google.common.eventbus.AsyncEventBus; import com.google.common.eventbus.EventBus; import org.junit.Before; import org.junit.Test; @@ -58,8 +61,9 @@ public class SoneInserterTest { @Test public void insertionDelayIsForwardedToSoneInserter() { - SetInsertionDelay setInsertionDelay = new SetInsertionDelay(); - setInsertionDelay.optionChanged(null, null, 15); + EventBus eventBus = new AsyncEventBus(sameThreadExecutor()); + eventBus.register(new SoneInserter(core, eventBus, freenetInterface, "SoneId")); + eventBus.post(new InsertionDelayChangedEvent(15)); assertThat(SoneInserter.getInsertionDelay().get(), is(15)); } @@ -218,4 +222,37 @@ public class SoneInserterTest { verify(core, never()).touchConfiguration(); } + @Test + public void soneInserterExitsIfSoneIsUnknown() { + SoneModificationDetector soneModificationDetector = + mock(SoneModificationDetector.class); + SoneInserter soneInserter = + new SoneInserter(core, eventBus, freenetInterface, "SoneId", + soneModificationDetector, 1); + when(soneModificationDetector.isEligibleForInsert()).thenReturn(true); + when(core.getSone("SoneId")).thenReturn(Optional.absent()); + soneInserter.serviceRun(); + } + + @Test + public void soneInserterCatchesExceptionAndContinues() { + SoneModificationDetector soneModificationDetector = + mock(SoneModificationDetector.class); + final SoneInserter soneInserter = + new SoneInserter(core, eventBus, freenetInterface, "SoneId", + soneModificationDetector, 1); + Answer> stopInserterAndThrowException = + new Answer>() { + @Override + public Optional answer( + InvocationOnMock invocation) { + soneInserter.stop(); + throw new NullPointerException(); + } + }; + when(soneModificationDetector.isEligibleForInsert()).thenAnswer( + stopInserterAndThrowException); + soneInserter.serviceRun(); + } + }