Skip to content

Commit

Permalink
MBL-905: Remove Use of IA tab feature flag (#1932)
Browse files Browse the repository at this point in the history
  • Loading branch information
Arkariang committed Jan 18, 2024
1 parent fe81cd6 commit 30e9684
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 97 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ enum class FlagKey(val key: String) {
ANDROID_CAPI_INTEGRATION("android_capi_integration"),
ANDROID_GOOGLE_ANALYTICS("android_google_analytics"),
ANDROID_PRE_LAUNCH_SCREEN("android_pre_launch_screen"),
ANDROID_AI_TAB("android_ai_tab"),
ANDROID_DARK_MODE_ENABLED("android_dark_mode_enabled")
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@file:JvmName("AiDisclosureExt")
package com.kickstarter.libs.utils.extensions

import com.kickstarter.models.AiDisclosure

/**
* AiDisclosure model can be empty when all fields shown on the UI are empty, but and ID has been generated.
*/
fun AiDisclosure.isUIEmptyValues(): Boolean {
return this.generatedByAiConsent.isEmpty() && this.generatedByAiDetails.isEmpty() && this.otherAiDetails.isEmpty() &&
!this.fundingForAiConsent && !this.fundingForAiOption && !this.fundingForAiAttribution
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.kickstarter.libs.Either
import com.kickstarter.libs.Environment
import com.kickstarter.libs.ProjectPagerTabs
import com.kickstarter.libs.RefTag
import com.kickstarter.libs.featureflag.FlagKey
import com.kickstarter.libs.rx.transformers.Transformers.combineLatestPair
import com.kickstarter.libs.rx.transformers.Transformers.errorsV2
import com.kickstarter.libs.rx.transformers.Transformers.ignoreValuesV2
Expand Down Expand Up @@ -39,6 +38,7 @@ import com.kickstarter.libs.utils.extensions.isFalse
import com.kickstarter.libs.utils.extensions.isNonZero
import com.kickstarter.libs.utils.extensions.isNotNull
import com.kickstarter.libs.utils.extensions.isTrue
import com.kickstarter.libs.utils.extensions.isUIEmptyValues
import com.kickstarter.libs.utils.extensions.metadataForProject
import com.kickstarter.libs.utils.extensions.negate
import com.kickstarter.libs.utils.extensions.updateProjectWith
Expand Down Expand Up @@ -589,7 +589,7 @@ interface ProjectPageViewModel {
val showEnvironmentalTab = it.project().envCommitments()?.isNotEmpty() ?: false
val tabConfigEnv = PagerTabConfig(ProjectPagerTabs.ENVIRONMENTAL_COMMITMENT, showEnvironmentalTab)

val showAiTab = it.project().aiDisclosure() != null && featureFlagClient.getBoolean(FlagKey.ANDROID_AI_TAB)
val showAiTab = it.project().aiDisclosure()?.let { disclosure -> !disclosure.isUIEmptyValues() } ?: false
val tabConfigAi = PagerTabConfig(ProjectPagerTabs.USE_OF_AI, showAiTab)

this.updateTabs.onNext(listOf(tabConfigAi, tabConfigEnv))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.kickstarter.libs.utils.extensions

import com.kickstarter.KSRobolectricTestCase
import com.kickstarter.models.AiDisclosure
import io.reactivex.disposables.CompositeDisposable
import org.junit.Test

class AiDisclosureExtTest : KSRobolectricTestCase() {

val disposables = CompositeDisposable()

@Test
fun testEmptyValues() {
val nullVal: AiDisclosure? = null
assertTrue(nullVal.isNull())

val emptyVal = AiDisclosure.builder().build()
assertTrue(emptyVal.isUIEmptyValues())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -498,28 +498,21 @@ class ProjectPageViewModelTest : KSRobolectricTestCase() {
}

@Test
fun testUIOutputs_whenFetchProjectWithAIDisclosureAndFFOn_WithoutEnVCommitment() {
fun testUIOutputs_whenFetchProjectWithAIDisclosure_WithoutEnVCommitment() {
val initialProject = ProjectFactory
.initialProject()
.toBuilder()
.envCommitments(emptyList())
.aiDisclosure(
AiDisclosure
.builder()
.generatedByAiDetails("Generated by AI details")
.build()
)
.build()

val mockFeatureFlagClient: MockFeatureFlagClient =
object : MockFeatureFlagClient() {
override fun getBoolean(FlagKey: FlagKey): Boolean {
return true
}
}

val environment = environment()
.toBuilder()
.featureFlagClient(mockFeatureFlagClient)
.apolloClientV2(apolloClientSuccessfulGetProject())
.build()

Expand All @@ -536,66 +529,21 @@ class ProjectPageViewModelTest : KSRobolectricTestCase() {
}

@Test
fun testUIOutputs_whenFetchProjectWithAIDisclosureAndFFOFF_WithoutEnVCommitment() {
val initialProject = ProjectFactory
.initialProject()
.toBuilder()
.envCommitments(emptyList())
.aiDisclosure(
AiDisclosure
.builder()
.build()
)
.build()

val mockFeatureFlagClient: MockFeatureFlagClient =
object : MockFeatureFlagClient() {
override fun getBoolean(FlagKey: FlagKey): Boolean {
return false
}
}

val environment = environment()
.toBuilder()
.apolloClientV2(apolloClientSuccessfulGetProject())
.featureFlagClient(mockFeatureFlagClient)
.build()

setUpEnvironment(environment)

this.vm.configureWith(Intent().putExtra(IntentKey.PROJECT, initialProject))

val list = listOf(
PagerTabConfig(ProjectPagerTabs.USE_OF_AI, false),
PagerTabConfig(ProjectPagerTabs.ENVIRONMENTAL_COMMITMENT, false)
)

this.updateTabs.assertValue(list)
}

@Test
fun testUIOutputs_whenFetchProjectWithAIDisclosureAndFFOn_WithEnVCommitment() {
fun testUIOutputs_whenFetchProjectWithAIDisclosure_WithEnVCommitment() {
val initialProject = ProjectFactory
.initialProject()
.toBuilder()
.envCommitments(listOf(EnvironmentalCommitment.builder().build()))
.aiDisclosure(
AiDisclosure
.builder()
.otherAiDetails("Other details string here")
.build()
)
.build()

val mockFeatureFlagClient: MockFeatureFlagClient =
object : MockFeatureFlagClient() {
override fun getBoolean(FlagKey: FlagKey): Boolean {
return true
}
}

val environment = environment()
.toBuilder()
.featureFlagClient(mockFeatureFlagClient)
.apolloClientV2(apolloClientSuccessfulGetProject())
.build()

Expand All @@ -611,44 +559,6 @@ class ProjectPageViewModelTest : KSRobolectricTestCase() {
this.updateTabs.assertValue(list)
}

@Test
fun testUIOutputs_whenFetchProjectWithAIDisclosureAndFFOFF_WithEnVCommitment() {
val initialProject = ProjectFactory
.initialProject()
.toBuilder()
.envCommitments(listOf(EnvironmentalCommitment.builder().build()))
.aiDisclosure(
AiDisclosure
.builder()
.build()
)
.build()

val mockFeatureFlagClient: MockFeatureFlagClient =
object : MockFeatureFlagClient() {
override fun getBoolean(FlagKey: FlagKey): Boolean {
return false
}
}

val environment = environment()
.toBuilder()
.apolloClientV2(apolloClientSuccessfulGetProject())
.featureFlagClient(mockFeatureFlagClient)
.build()

setUpEnvironment(environment)

this.vm.configureWith(Intent().putExtra(IntentKey.PROJECT, initialProject))

val list = listOf(
PagerTabConfig(ProjectPagerTabs.USE_OF_AI, false),
PagerTabConfig(ProjectPagerTabs.ENVIRONMENTAL_COMMITMENT, true)
)

this.updateTabs.assertValue(list)
}

@Test
fun testUIOutputs_whenFetchProjectWithEnvCommitment() {
val initialProject = ProjectFactory.project()
Expand Down

0 comments on commit 30e9684

Please sign in to comment.