Skip to content

Commit b6d930c

Browse files
committed
Add e2e test
1 parent 34abcd4 commit b6d930c

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

feature-toggles/feature-toggles-impl/src/test/java/com/duckduckgo/feature/toggles/codegen/ContributesRemoteFeatureCodeGeneratorTest.kt

+75
Original file line numberDiff line numberDiff line change
@@ -512,13 +512,16 @@ class ContributesRemoteFeatureCodeGeneratorTest {
512512
assertTrue(testFeature.defaultTrue().isEnabled())
513513
assertFalse(testFeature.internalDefaultFalse().isEnabled())
514514
assertFalse(testFeature.defaultFalse().isEnabled())
515+
assertFalse(testFeature.defaultValueInternal().isEnabled())
515516

516517
whenever(appBuildConfig.flavor).thenReturn(INTERNAL)
517518
assertTrue(privacyPlugin.store("testFeature", jsonString))
518519
assertTrue(testFeature.internalDefaultTrue().isEnabled())
519520
assertTrue(testFeature.defaultTrue().isEnabled())
520521
assertTrue(testFeature.internalDefaultFalse().isEnabled())
521522
assertFalse(testFeature.defaultFalse().isEnabled())
523+
// the default value doesn't get re-evaluated, it's assigned when toggle is first created. That's why this returns FALSE
524+
assertFalse(testFeature.defaultValueInternal().isEnabled())
522525

523526
jsonString = """
524527
{
@@ -535,6 +538,9 @@ class ContributesRemoteFeatureCodeGeneratorTest {
535538
},
536539
"defaultFalse": {
537540
"state": "enabled"
541+
},
542+
"defaultValueInternal": {
543+
"state": "enabled"
538544
}
539545
}
540546
}
@@ -546,13 +552,15 @@ class ContributesRemoteFeatureCodeGeneratorTest {
546552
assertTrue(testFeature.defaultTrue().isEnabled())
547553
assertTrue(testFeature.internalDefaultFalse().isEnabled())
548554
assertTrue(testFeature.defaultFalse().isEnabled())
555+
assertTrue(testFeature.defaultValueInternal().isEnabled())
549556

550557
whenever(appBuildConfig.flavor).thenReturn(INTERNAL)
551558
assertTrue(privacyPlugin.store("testFeature", jsonString))
552559
assertTrue(testFeature.internalDefaultTrue().isEnabled())
553560
assertTrue(testFeature.defaultTrue().isEnabled())
554561
assertTrue(testFeature.internalDefaultFalse().isEnabled())
555562
assertTrue(testFeature.defaultFalse().isEnabled())
563+
assertTrue(testFeature.defaultValueInternal().isEnabled())
556564

557565
jsonString = """
558566
{
@@ -569,6 +577,9 @@ class ContributesRemoteFeatureCodeGeneratorTest {
569577
},
570578
"defaultFalse": {
571579
"state": "disabled"
580+
},
581+
"defaultValueInternal": {
582+
"state": "disabled"
572583
}
573584
}
574585
}
@@ -579,13 +590,15 @@ class ContributesRemoteFeatureCodeGeneratorTest {
579590
assertFalse(testFeature.defaultTrue().isEnabled())
580591
assertFalse(testFeature.internalDefaultFalse().isEnabled())
581592
assertFalse(testFeature.defaultFalse().isEnabled())
593+
assertFalse(testFeature.defaultValueInternal().isEnabled())
582594

583595
whenever(appBuildConfig.flavor).thenReturn(INTERNAL)
584596
assertTrue(privacyPlugin.store("testFeature", jsonString))
585597
assertTrue(testFeature.internalDefaultTrue().isEnabled())
586598
assertFalse(testFeature.defaultTrue().isEnabled())
587599
assertTrue(testFeature.internalDefaultFalse().isEnabled())
588600
assertFalse(testFeature.defaultFalse().isEnabled())
601+
assertFalse(testFeature.defaultValueInternal().isEnabled())
589602

590603
jsonString = """
591604
{
@@ -602,6 +615,9 @@ class ContributesRemoteFeatureCodeGeneratorTest {
602615
},
603616
"defaultFalse": {
604617
"state": "internal"
618+
},
619+
"defaultValueInternal": {
620+
"state": "internal"
605621
}
606622
}
607623
}
@@ -612,13 +628,72 @@ class ContributesRemoteFeatureCodeGeneratorTest {
612628
assertFalse(testFeature.defaultTrue().isEnabled())
613629
assertFalse(testFeature.internalDefaultFalse().isEnabled())
614630
assertFalse(testFeature.defaultFalse().isEnabled())
631+
assertFalse(testFeature.defaultValueInternal().isEnabled())
615632

616633
whenever(appBuildConfig.flavor).thenReturn(INTERNAL)
617634
assertTrue(privacyPlugin.store("testFeature", jsonString))
618635
assertTrue(testFeature.internalDefaultTrue().isEnabled())
619636
assertTrue(testFeature.defaultTrue().isEnabled())
620637
assertTrue(testFeature.internalDefaultFalse().isEnabled())
621638
assertTrue(testFeature.defaultFalse().isEnabled())
639+
assertTrue(testFeature.defaultValueInternal().isEnabled())
640+
}
641+
642+
@Test
643+
fun `test default value set to internal`() {
644+
val feature = generatedFeatureNewInstance()
645+
val privacyPlugin = (feature as PrivacyFeaturePlugin)
646+
647+
// Order matters, we need to start with the config that does not have any features
648+
var jsonString = """
649+
{
650+
"state": "disabled",
651+
"features": {}
652+
}
653+
""".trimIndent()
654+
655+
assertTrue(privacyPlugin.store("testFeature", jsonString))
656+
whenever(appBuildConfig.flavor).thenReturn(INTERNAL)
657+
assertTrue(testFeature.defaultValueInternal().isEnabled())
658+
659+
jsonString = """
660+
{
661+
"state": "disabled",
662+
"features": {
663+
"defaultValueInternal": {
664+
"state": "enabled"
665+
}
666+
}
667+
}
668+
""".trimIndent()
669+
assertTrue(privacyPlugin.store("testFeature", jsonString))
670+
assertTrue(testFeature.defaultValueInternal().isEnabled())
671+
672+
jsonString = """
673+
{
674+
"state": "disabled",
675+
"features": {
676+
"defaultValueInternal": {
677+
"state": "disabled"
678+
}
679+
}
680+
}
681+
""".trimIndent()
682+
assertTrue(privacyPlugin.store("testFeature", jsonString))
683+
assertFalse(testFeature.defaultValueInternal().isEnabled())
684+
685+
jsonString = """
686+
{
687+
"state": "disabled",
688+
"features": {
689+
"defaultValueInternal": {
690+
"state": "internal"
691+
}
692+
}
693+
}
694+
""".trimIndent()
695+
assertTrue(privacyPlugin.store("testFeature", jsonString))
696+
assertTrue(testFeature.defaultValueInternal().isEnabled())
622697
}
623698

624699
@Test

feature-toggles/feature-toggles-impl/src/test/java/com/duckduckgo/feature/toggles/codegen/TestTriggerFeature.kt

+3
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ interface TestTriggerFeature {
4848
@InternalAlwaysEnabled
4949
fun internalDefaultFalse(): Toggle
5050

51+
@DefaultValue(DefaultFeatureValue.INTERNAL)
52+
fun defaultValueInternal(): Toggle
53+
5154
@DefaultValue(DefaultFeatureValue.TRUE)
5255
fun defaultTrue(): Toggle
5356

0 commit comments

Comments
 (0)