@@ -83,8 +83,14 @@ internal class DatadogFlagsClientTest {
8383 @StringForgery
8484 lateinit var fakeJsonKey: String
8585
86+ private lateinit var fakeDefaultMapValue: Map <String , Any ?>
87+
8688 @BeforeEach
8789 fun `set up` (forge : Forge ) {
90+ fakeDefaultMapValue = mapOf (
91+ " name" to forge.anAlphabeticalString(),
92+ " age" to forge.anInt()
93+ )
8894 whenever(mockFeatureSdkCore.internalLogger) doReturn mockInternalLogger
8995 whenever(mockFeatureSdkCore.getFeature(RUM_FEATURE_NAME )) doReturn mock()
9096
@@ -497,9 +503,11 @@ internal class DatadogFlagsClientTest {
497503 val fakeDefaultValue = JSONObject ().apply {
498504 put(fakeJsonKey, forge.anAlphabeticalString())
499505 }
506+ val fakeKey1Value = forge.anAlphabeticalString()
507+ val fakeKey2Value = forge.anInt()
500508 val fakeFlagValue = JSONObject ().apply {
501- put(" key1" , forge.anAlphabeticalString() )
502- put(" key2" , forge.anInt() )
509+ put(" key1" , fakeKey1Value )
510+ put(" key2" , fakeKey2Value )
503511 }
504512 val fakeFlag = forge.getForgery<PrecomputedFlag >().copy(
505513 variationType = VariationType .OBJECT .value,
@@ -633,14 +641,23 @@ internal class DatadogFlagsClientTest {
633641 fun `M return flag value as map W resolveStructureValue() {map default, flag exists}` (forge : Forge ) {
634642 // Given
635643 val fakeFlagKey = forge.anAlphabeticalString()
636- val fakeDefaultValue = mapOf (" default" to " value" )
644+ val fakeName = forge.anAlphabeticalString()
645+ val fakeAge = forge.anInt()
646+ val fakeCity = forge.anAlphabeticalString()
647+ val expectedMap = mapOf (
648+ " name" to fakeName,
649+ " age" to fakeAge,
650+ " nested" to mapOf (
651+ " city" to fakeCity
652+ )
653+ )
637654 val fakeFlagValue = JSONObject ().apply {
638- put(" name" , " Alice " )
639- put(" age" , 30 )
655+ put(" name" , fakeName )
656+ put(" age" , fakeAge )
640657 put(
641658 " nested" ,
642659 JSONObject ().apply {
643- put(" city" , " NYC " )
660+ put(" city" , fakeCity )
644661 }
645662 )
646663 }
@@ -656,15 +673,10 @@ internal class DatadogFlagsClientTest {
656673 whenever(mockFlagsRepository.getPrecomputedFlagWithContext(fakeFlagKey)) doReturn (fakeFlag to fakeContext)
657674
658675 // When
659- val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultValue )
676+ val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultMapValue )
660677
661678 // Then - returns Map with no JSON types
662- assertThat(result).isInstanceOf(Map ::class .java)
663- assertThat(result[" name" ]).isEqualTo(" Alice" )
664- assertThat(result[" age" ]).isEqualTo(30 )
665- assertThat(result[" nested" ]).isInstanceOf(Map ::class .java)
666- val nested = result[" nested" ] as Map <* , * >
667- assertThat(nested[" city" ]).isEqualTo(" NYC" )
679+ assertThat(result).isEqualTo(expectedMap)
668680
669681 // Verify exposure tracked
670682 verify(mockProcessor).processEvent(
@@ -678,32 +690,27 @@ internal class DatadogFlagsClientTest {
678690 fun `M return default map W resolveStructureValue() {map default, flag does not exist}` (forge : Forge ) {
679691 // Given
680692 val fakeFlagKey = forge.anAlphabeticalString()
681- val fakeDefaultValue = mapOf (
682- " key" to " value" ,
683- " number" to 42
684- )
685693 whenever(mockFlagsRepository.getPrecomputedFlagWithContext(fakeFlagKey)) doReturn null
686694
687695 // When
688- val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultValue )
696+ val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultMapValue )
689697
690698 // Then
691- assertThat(result).isEqualTo(fakeDefaultValue )
699+ assertThat(result).isSameAs(fakeDefaultMapValue )
692700 verifyNoInteractions(mockProcessor)
693701 }
694702
695703 @Test
696704 fun `M return default map W resolveStructureValue() {map default, provider not ready}` (forge : Forge ) {
697705 // Given
698706 val fakeFlagKey = forge.anAlphabeticalString()
699- val fakeDefaultValue = mapOf (" default" to true )
700707 whenever(mockFlagsRepository.getEvaluationContext()) doReturn null
701708
702709 // When
703- val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultValue )
710+ val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultMapValue )
704711
705712 // Then
706- assertThat(result).isEqualTo(fakeDefaultValue )
713+ assertThat(result).isSameAs(fakeDefaultMapValue )
707714 verifyNoInteractions(mockProcessor)
708715 verifyNoInteractions(mockRumEvaluationLogger)
709716 }
@@ -728,10 +735,9 @@ internal class DatadogFlagsClientTest {
728735 fun `M return default map W resolveStructureValue() {map default, type mismatch}` (forge : Forge ) {
729736 // Given
730737 val fakeFlagKey = forge.anAlphabeticalString()
731- val fakeDefaultValue = mapOf (" key" to " value" )
732738 val fakeFlag = forge.getForgery<PrecomputedFlag >().copy(
733739 variationType = VariationType .STRING .value,
734- variationValue = " not-an-object "
740+ variationValue = forge.anAlphabeticalString()
735741 )
736742 val fakeContext = EvaluationContext (
737743 targetingKey = forge.anAlphabeticalString(),
@@ -740,10 +746,10 @@ internal class DatadogFlagsClientTest {
740746 whenever(mockFlagsRepository.getPrecomputedFlagWithContext(fakeFlagKey)) doReturn (fakeFlag to fakeContext)
741747
742748 // When
743- val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultValue )
749+ val result = testedClient.resolveStructureValue(fakeFlagKey, fakeDefaultMapValue )
744750
745751 // Then
746- assertThat(result).isEqualTo(fakeDefaultValue )
752+ assertThat(result).isSameAs(fakeDefaultMapValue )
747753 verifyNoInteractions(mockProcessor) // No exposure tracked for type mismatch
748754 }
749755
@@ -1284,7 +1290,9 @@ internal class DatadogFlagsClientTest {
12841290 ) {
12851291 // Given
12861292 val fakeFlagKey = forge.anAlphabeticalString()
1287- val fakeDefaultValue = mapOf (" default" to " value" )
1293+ val fakeDefaultValue = JSONObject ().apply {
1294+ put(" default" , " value" )
1295+ }
12881296 val fakeFlag = forge.getForgery<PrecomputedFlag >().copy(
12891297 variationType = VariationType .STRING .value,
12901298 variationValue = " just a string"
0 commit comments