X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FPreferencesTest.java;h=7327abc3fda0dd02d76e558e6537838693dcc784;hp=a19fe2ed933186011469572cb72105da431b56d5;hb=c2c32dca6279ad6f9af68cf2cf4870d56e7c2ff9;hpb=82e3b3261d2fc90d3893df6d417a2828ce5f8ab3 diff --git a/src/test/java/net/pterodactylus/sone/core/PreferencesTest.java b/src/test/java/net/pterodactylus/sone/core/PreferencesTest.java index a19fe2e..7327abc 100644 --- a/src/test/java/net/pterodactylus/sone/core/PreferencesTest.java +++ b/src/test/java/net/pterodactylus/sone/core/PreferencesTest.java @@ -4,11 +4,14 @@ import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.ALWAYS; import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.NO; import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.WRITING; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; -import static org.mockito.Matchers.any; +import static org.mockito.ArgumentCaptor.forClass; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; import net.pterodactylus.sone.core.event.InsertionDelayChangedEvent; import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired; @@ -17,30 +20,29 @@ import net.pterodactylus.sone.fcp.event.FcpInterfaceDeactivatedEvent; import net.pterodactylus.sone.fcp.event.FullAccessRequiredChanged; import com.google.common.eventbus.EventBus; -import org.junit.After; import org.junit.Test; import org.mockito.ArgumentCaptor; /** * Unit test for {@link Preferences}. - * - * @author David ‘Bombe’ Roden */ public class PreferencesTest { private final EventBus eventBus = mock(EventBus.class); private final Preferences preferences = new Preferences(eventBus); - @After - public void tearDown() { - verifyNoMoreInteractions(eventBus); - } - @Test public void preferencesRetainInsertionDelay() { preferences.setInsertionDelay(15); assertThat(preferences.getInsertionDelay(), is(15)); - verify(eventBus).post(any(InsertionDelayChangedEvent.class)); + } + + @Test + public void preferencesSendsEventOnSettingInsertionDelay() { + preferences.setInsertionDelay(15); + ArgumentCaptor eventsCaptor = forClass(Object.class); + verify(eventBus, atLeastOnce()).post(eventsCaptor.capture()); + assertThat(eventsCaptor.getAllValues(), hasItem(new InsertionDelayChangedEvent(15))); } @Test(expected = IllegalArgumentException.class) @@ -49,10 +51,19 @@ public class PreferencesTest { } @Test + public void noEventIsSentWhenInvalidInsertionDelayIsSet() { + try { + preferences.setInsertionDelay(-15); + } catch (IllegalArgumentException iae) { + /* ignore. */ + } + verify(eventBus, never()).post(any()); + } + + @Test public void preferencesReturnDefaultValueWhenInsertionDelayIsSetToNull() { preferences.setInsertionDelay(null); assertThat(preferences.getInsertionDelay(), is(60)); - verify(eventBus).post(any(InsertionDelayChangedEvent.class)); } @Test @@ -275,7 +286,7 @@ public class PreferencesTest { private void verifyFullAccessRequiredChangedEvent( FullAccessRequired fullAccessRequired) { ArgumentCaptor fullAccessRequiredCaptor = - ArgumentCaptor.forClass(FullAccessRequiredChanged.class); + forClass(FullAccessRequiredChanged.class); verify(eventBus).post(fullAccessRequiredCaptor.capture()); assertThat( fullAccessRequiredCaptor.getValue().getFullAccessRequired(), @@ -308,4 +319,12 @@ public class PreferencesTest { assertThat(preferences.getFcpFullAccessRequired(), is(ALWAYS)); } + @Test + public void settingInsertionDelayToValidValueSendsChangeEvent() { + preferences.setInsertionDelay(30); + ArgumentCaptor eventsCaptor = forClass(Object.class); + verify(eventBus, atLeastOnce()).post(eventsCaptor.capture()); + assertThat(eventsCaptor.getAllValues(), hasItem(new PreferenceChangedEvent("InsertionDelay", 30))); + } + }