+ @Test
+ fun `default strict filtering is false`() {
+ assertThat(preferences.strictFiltering, equalTo(false))
+ }
+
+ @Test
+ fun `strict filtering can be set`() {
+ preferences.newStrictFiltering = true
+ assertThat(preferences.strictFiltering, equalTo(true))
+ }
+
+ @Test
+ fun `strict filtering returns to default on null`() {
+ preferences.newStrictFiltering = true
+ preferences.newStrictFiltering = null
+ assertThat(preferences.strictFiltering, equalTo(false))
+ }
+
+ @Test
+ fun `event is generated when strict filtering is activated`() {
+ val events = mutableListOf<StrictFilteringActivatedEvent>()
+ eventBus.register(object {
+ @Subscribe fun strictFilteringActivatedEvent(event: StrictFilteringActivatedEvent) =
+ events.add(event)
+ })
+ preferences.newStrictFiltering = true
+ assertThat(events, hasItem<StrictFilteringActivatedEvent>(instanceOf(StrictFilteringActivatedEvent::class.java)))
+ }
+
+ @Test
+ fun `event is generated when strict filtering is deactivated`() {
+ val events = mutableListOf<StrictFilteringDeactivatedEvent>()
+ eventBus.register(object {
+ @Subscribe fun strictFilteringDeactivatedEvent(event: StrictFilteringDeactivatedEvent) =
+ events.add(event)
+ })
+ preferences.newStrictFiltering = false
+ assertThat(events, hasItem<StrictFilteringDeactivatedEvent>(instanceOf(StrictFilteringDeactivatedEvent::class.java)))
+ }
+
+ @Test
+ fun `default strict filtering is saved as null`() {
+ verifySavedOption(nullValue()) { it.getBooleanValue("Option/StrictFiltering").value }
+ }
+
+ @Test
+ fun `activated strict filtering is saved as true`() {
+ preferences.newStrictFiltering = true
+ verifySavedOption(equalTo(true)) { it.getBooleanValue("Option/StrictFiltering").value }
+ }
+
+ @Test
+ fun `deactivated strict filtering is saved as false`() {
+ preferences.newStrictFiltering = false
+ verifySavedOption(equalTo(false)) { it.getBooleanValue("Option/StrictFiltering").value }
+ }
+
+ private fun <T> verifySavedOption(matcher: Matcher<T>, getter: (Configuration) -> T) {
+ val configuration = Configuration(MapConfigurationBackend())
+ preferences.saveTo(configuration)
+ assertThat(getter(configuration), matcher)
+ }
+