@@ -76,57 +76,6 @@ class AppsflyerKitTests {
7676 Assert .assertTrue(name.isNotEmpty())
7777 }
7878
79- @Test
80- @Throws(Exception ::class )
81- fun testParseSharingFilterForPartners_returnsListForValidJson () {
82- val method =
83- AppsFlyerKit ::class .java.getDeclaredMethod(
84- " parseSharingFilterForPartners" ,
85- String ::class .java,
86- )
87- method.isAccessible = true
88- val result = method.invoke(kit, """ ["partner_1", "partner_2"]""" )
89- Assert .assertEquals(listOf (" partner_1" , " partner_2" ), result)
90- }
91-
92- @Test
93- @Throws(Exception ::class )
94- fun testParseSharingFilterForPartners_returnsNullForEmptyInput () {
95- val method =
96- AppsFlyerKit ::class .java.getDeclaredMethod(
97- " parseSharingFilterForPartners" ,
98- String ::class .java,
99- )
100- method.isAccessible = true
101- Assert .assertNull(method.invoke(kit, " " ))
102- Assert .assertNull(method.invoke(kit, null ))
103- }
104-
105- @Test
106- @Throws(Exception ::class )
107- fun testParseSharingFilterForPartners_returnsNullForInvalidJson () {
108- val method =
109- AppsFlyerKit ::class .java.getDeclaredMethod(
110- " parseSharingFilterForPartners" ,
111- String ::class .java,
112- )
113- method.isAccessible = true
114- Assert .assertNull(method.invoke(kit, " not a json array" ))
115- }
116-
117- @Test
118- @Throws(Exception ::class )
119- fun testParseSharingFilterForPartners_stripsBackslashes () {
120- val method =
121- AppsFlyerKit ::class .java.getDeclaredMethod(
122- " parseSharingFilterForPartners" ,
123- String ::class .java,
124- )
125- method.isAccessible = true
126- val result = method.invoke(kit, """ [\"test_1\", \"test_2\"]""" )
127- Assert .assertEquals(listOf (" test_1" , " test_2" ), result)
128- }
129-
13079 /* *
13180 * Kit *should* throw an exception when they're initialized with the wrong settings.
13281 *
@@ -776,6 +725,187 @@ class AppsflyerKitTests {
776725 Assert .assertEquals(emptyMap<String , String >(), result)
777726 }
778727
728+ // region manualStart and userIdentificationType (MPID) tests
729+
730+ @Test
731+ @Throws(Exception ::class )
732+ fun testIsManualStart_returnsTrueWhenSettingIsTrue () {
733+ setKitSettings(mapOf (AppsFlyerKit .MANUAL_START to " true" ))
734+ val method = AppsFlyerKit ::class .java.getDeclaredMethod(" isManualStart" )
735+ method.isAccessible = true
736+ Assert .assertTrue(method.invoke(kit) as Boolean )
737+ }
738+
739+ @Test
740+ @Throws(Exception ::class )
741+ fun testIsManualStart_returnsFalseWhenSettingIsFalse () {
742+ setKitSettings(mapOf (AppsFlyerKit .MANUAL_START to " false" ))
743+ val method = AppsFlyerKit ::class .java.getDeclaredMethod(" isManualStart" )
744+ method.isAccessible = true
745+ Assert .assertFalse(method.invoke(kit) as Boolean )
746+ }
747+
748+ @Test
749+ @Throws(Exception ::class )
750+ fun testIsManualStart_returnsFalseWhenSettingIsAbsent () {
751+ setKitSettings(emptyMap())
752+ val method = AppsFlyerKit ::class .java.getDeclaredMethod(" isManualStart" )
753+ method.isAccessible = true
754+ Assert .assertFalse(method.invoke(kit) as Boolean )
755+ }
756+
757+ @Test
758+ @Throws(Exception ::class )
759+ fun testIsUserIdentificationMpid_returnsTrueWhenSettingIsMPID () {
760+ setKitSettings(
761+ mapOf (
762+ AppsFlyerKit .USER_IDENTIFICATION_TYPE to AppsFlyerKit .USER_IDENTIFICATION_MPID ,
763+ ),
764+ )
765+ val method =
766+ AppsFlyerKit ::class .java.getDeclaredMethod(" isUserIdentificationMpid" )
767+ method.isAccessible = true
768+ Assert .assertTrue(method.invoke(kit) as Boolean )
769+ }
770+
771+ @Test
772+ @Throws(Exception ::class )
773+ fun testIsUserIdentificationMpid_returnsFalseWhenSettingIsAbsent () {
774+ setKitSettings(emptyMap())
775+ val method =
776+ AppsFlyerKit ::class .java.getDeclaredMethod(" isUserIdentificationMpid" )
777+ method.isAccessible = true
778+ Assert .assertFalse(method.invoke(kit) as Boolean )
779+ }
780+
781+ @Test
782+ @Throws(Exception ::class )
783+ fun testIsUserIdentificationMpid_returnsFalseWhenSettingIsOther () {
784+ setKitSettings(mapOf (AppsFlyerKit .USER_IDENTIFICATION_TYPE to " CustomerId" ))
785+ val method =
786+ AppsFlyerKit ::class .java.getDeclaredMethod(" isUserIdentificationMpid" )
787+ method.isAccessible = true
788+ Assert .assertFalse(method.invoke(kit) as Boolean )
789+ }
790+
791+ @Test
792+ @Throws(Exception ::class )
793+ fun testOnKitCreate_withManualStartTrue_doesNotCallStart () {
794+ val settings = hashMapOf<String ?, String ?>()
795+ settings[AppsFlyerKit .DEV_KEY ] = " testDevKey"
796+ settings[AppsFlyerKit .MANUAL_START ] = " true"
797+ MParticle .setInstance(mock(MParticle ::class .java))
798+ Mockito .`when `(MParticle .getInstance()?.environment)
799+ .thenReturn(MParticle .Environment .Production )
800+ Mockito .`when `(MParticle .isAndroidIdEnabled()).thenReturn(false )
801+
802+ kit.onKitCreate(settings, mock(Context ::class .java))
803+
804+ Assert .assertEquals(0 , appsflyer.startCallCount)
805+ }
806+
807+ @Test
808+ @Throws(Exception ::class )
809+ fun testOnKitCreate_withManualStartFalse_callsStart () {
810+ val settings = hashMapOf<String ?, String ?>()
811+ settings[AppsFlyerKit .DEV_KEY ] = " testDevKey"
812+ settings[AppsFlyerKit .MANUAL_START ] = " false"
813+ MParticle .setInstance(mock(MParticle ::class .java))
814+ Mockito .`when `(MParticle .getInstance()?.environment)
815+ .thenReturn(MParticle .Environment .Production )
816+ Mockito .`when `(MParticle .isAndroidIdEnabled()).thenReturn(false )
817+
818+ kit.onKitCreate(settings, mock(Context ::class .java))
819+
820+ Assert .assertEquals(1 , appsflyer.startCallCount)
821+ }
822+
823+ @Test
824+ @Throws(Exception ::class )
825+ fun testOnKitCreate_withManualStartUnset_callsStart () {
826+ val settings = hashMapOf<String ?, String ?>()
827+ settings[AppsFlyerKit .DEV_KEY ] = " testDevKey"
828+ MParticle .setInstance(mock(MParticle ::class .java))
829+ Mockito .`when `(MParticle .getInstance()?.environment)
830+ .thenReturn(MParticle .Environment .Production )
831+ Mockito .`when `(MParticle .isAndroidIdEnabled()).thenReturn(false )
832+
833+ kit.onKitCreate(settings, mock(Context ::class .java))
834+
835+ Assert .assertEquals(1 , appsflyer.startCallCount)
836+ }
837+
838+ @Test
839+ @Throws(Exception ::class )
840+ fun testOnActivityCreated_withManualStartTrue_doesNotCallStart () {
841+ setKitSettings(
842+ mapOf (
843+ AppsFlyerKit .MANUAL_START to " true" ,
844+ ),
845+ )
846+ kit.onActivityCreated(mock(Activity ::class .java), null )
847+ Assert .assertEquals(0 , appsflyer.startCallCount)
848+ }
849+
850+ @Test
851+ @Throws(Exception ::class )
852+ fun testOnActivityCreated_withManualStartFalse_callsStart () {
853+ setKitSettings(
854+ mapOf (
855+ AppsFlyerKit .MANUAL_START to " false" ,
856+ ),
857+ )
858+ kit.onActivityCreated(mock(Activity ::class .java), null )
859+ Assert .assertEquals(1 , appsflyer.startCallCount)
860+ }
861+
862+ @Test
863+ @Throws(Exception ::class )
864+ fun testSetUserIdentity_withUserIdentificationMpid_setsCustomerUserIdToMpid () {
865+ setKitSettings(
866+ mapOf (
867+ AppsFlyerKit .USER_IDENTIFICATION_TYPE to AppsFlyerKit .USER_IDENTIFICATION_MPID ,
868+ ),
869+ )
870+ val mpid = 12345L
871+ Mockito .`when `(user.getId()).thenReturn(mpid)
872+ filteredMParticleUser = FilteredMParticleUser .getInstance(user, kit)
873+ setKitCurrentUser(filteredMParticleUser)
874+
875+ kit.setUserIdentity(MParticle .IdentityType .CustomerId , " custom-client-id" )
876+
877+ Assert .assertEquals(" 12345" , appsflyer.customerUserId)
878+ }
879+
880+ @Test
881+ @Throws(Exception ::class )
882+ fun testSetUserIdentity_withoutUserIdentificationMpid_setsCustomerUserIdToIdentity () {
883+ setKitSettings(emptyMap())
884+ setKitCurrentUser(null )
885+
886+ kit.setUserIdentity(MParticle .IdentityType .CustomerId , " custom-client-id" )
887+
888+ Assert .assertEquals(" custom-client-id" , appsflyer.customerUserId)
889+ }
890+
891+ @Throws(Exception ::class )
892+ private fun setKitSettings (settings : Map <String , String >) {
893+ val settingsField = KitIntegration ::class .java.getDeclaredField(" settings" )
894+ settingsField.isAccessible = true
895+ val settingsMap = mutableMapOf<String ?, String ?>()
896+ settings.forEach { (k, v) -> settingsMap[k] = v }
897+ settingsField.set(kit, settingsMap)
898+ }
899+
900+ @Throws(Exception ::class )
901+ private fun setKitCurrentUser (user : FilteredMParticleUser ? ) {
902+ val field = KitIntegration ::class .java.getDeclaredField(" currentUser" )
903+ field.isAccessible = true
904+ field.set(kit, user)
905+ }
906+
907+ // endregion
908+
779909 private var emptyCoreCallbacks: CoreCallbacks =
780910 object : CoreCallbacks {
781911 var activity = Activity ()
0 commit comments