|
|
@ -16,6 +16,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
package io.element.android.libraries.featureflag.impl |
|
|
|
package io.element.android.libraries.featureflag.impl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import app.cash.turbine.test |
|
|
|
import com.google.common.truth.Truth.assertThat |
|
|
|
import com.google.common.truth.Truth.assertThat |
|
|
|
import io.element.android.libraries.featureflag.api.FeatureFlags |
|
|
|
import io.element.android.libraries.featureflag.api.FeatureFlags |
|
|
|
import kotlinx.coroutines.test.runTest |
|
|
|
import kotlinx.coroutines.test.runTest |
|
|
@ -26,8 +27,10 @@ class DefaultFeatureFlagServiceTest { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
fun `given service without provider when feature is checked then it returns the default value`() = runTest { |
|
|
|
fun `given service without provider when feature is checked then it returns the default value`() = runTest { |
|
|
|
val featureFlagService = DefaultFeatureFlagService(emptySet()) |
|
|
|
val featureFlagService = DefaultFeatureFlagService(emptySet()) |
|
|
|
val isFeatureEnabled = featureFlagService.isFeatureEnabled(FeatureFlags.LocationSharing) |
|
|
|
featureFlagService.isFeatureEnabledFlow(FeatureFlags.LocationSharing).test { |
|
|
|
assertThat(isFeatureEnabled).isEqualTo(FeatureFlags.LocationSharing.defaultValue) |
|
|
|
assertThat(awaitItem()).isEqualTo(FeatureFlags.LocationSharing.defaultValue) |
|
|
|
|
|
|
|
cancelAndIgnoreRemainingEvents() |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
@ -50,9 +53,11 @@ class DefaultFeatureFlagServiceTest { |
|
|
|
val featureFlagProvider = FakeMutableFeatureFlagProvider(0) |
|
|
|
val featureFlagProvider = FakeMutableFeatureFlagProvider(0) |
|
|
|
val featureFlagService = DefaultFeatureFlagService(setOf(featureFlagProvider)) |
|
|
|
val featureFlagService = DefaultFeatureFlagService(setOf(featureFlagProvider)) |
|
|
|
featureFlagService.setFeatureEnabled(FeatureFlags.LocationSharing, true) |
|
|
|
featureFlagService.setFeatureEnabled(FeatureFlags.LocationSharing, true) |
|
|
|
assertThat(featureFlagService.isFeatureEnabled(FeatureFlags.LocationSharing)).isEqualTo(true) |
|
|
|
featureFlagService.isFeatureEnabledFlow(FeatureFlags.LocationSharing).test { |
|
|
|
|
|
|
|
assertThat(awaitItem()).isEqualTo(true) |
|
|
|
featureFlagService.setFeatureEnabled(FeatureFlags.LocationSharing, false) |
|
|
|
featureFlagService.setFeatureEnabled(FeatureFlags.LocationSharing, false) |
|
|
|
assertThat(featureFlagService.isFeatureEnabled(FeatureFlags.LocationSharing)).isEqualTo(false) |
|
|
|
assertThat(awaitItem()).isEqualTo(false) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
@ -62,6 +67,8 @@ class DefaultFeatureFlagServiceTest { |
|
|
|
val featureFlagService = DefaultFeatureFlagService(setOf(lowPriorityFeatureFlagProvider, highPriorityFeatureFlagProvider)) |
|
|
|
val featureFlagService = DefaultFeatureFlagService(setOf(lowPriorityFeatureFlagProvider, highPriorityFeatureFlagProvider)) |
|
|
|
lowPriorityFeatureFlagProvider.setFeatureEnabled(FeatureFlags.LocationSharing, false) |
|
|
|
lowPriorityFeatureFlagProvider.setFeatureEnabled(FeatureFlags.LocationSharing, false) |
|
|
|
highPriorityFeatureFlagProvider.setFeatureEnabled(FeatureFlags.LocationSharing, true) |
|
|
|
highPriorityFeatureFlagProvider.setFeatureEnabled(FeatureFlags.LocationSharing, true) |
|
|
|
assertThat(featureFlagService.isFeatureEnabled(FeatureFlags.LocationSharing)).isEqualTo(true) |
|
|
|
featureFlagService.isFeatureEnabledFlow(FeatureFlags.LocationSharing).test { |
|
|
|
|
|
|
|
assertThat(awaitItem()).isEqualTo(true) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|