react-native-mparticle 2.7.13 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/SECURITY.md +9 -0
  2. package/android/build.gradle +65 -10
  3. package/android/src/main/AndroidManifestNew.xml +3 -0
  4. package/android/src/main/java/com/mparticle/react/MParticleModule.kt +976 -0
  5. package/android/src/main/java/com/mparticle/react/MParticlePackage.kt +68 -0
  6. package/android/src/main/java/com/mparticle/react/rokt/MPRoktModuleImpl.kt +251 -0
  7. package/android/src/main/java/com/mparticle/react/rokt/RoktLayoutViewManagerImpl.kt +79 -0
  8. package/android/src/newarch/java/com/mparticle/react/rokt/MPRoktModule.kt +130 -0
  9. package/android/src/newarch/java/com/mparticle/react/rokt/RoktLayoutViewManager.kt +22 -0
  10. package/android/src/oldarch/java/com/mparticle/react/NativeMPRoktSpec.kt +29 -0
  11. package/android/src/oldarch/java/com/mparticle/react/NativeMParticleSpec.kt +153 -0
  12. package/android/src/oldarch/java/com/mparticle/react/rokt/MPRoktModule.kt +79 -0
  13. package/android/src/oldarch/java/com/mparticle/react/rokt/RoktLayoutViewManager.kt +34 -0
  14. package/ios/RNMParticle/RNMPRokt.h +15 -0
  15. package/ios/RNMParticle/RNMPRokt.mm +247 -0
  16. package/ios/RNMParticle/RNMParticle.h +6 -1
  17. package/ios/RNMParticle/RNMParticle.mm +1208 -0
  18. package/ios/RNMParticle/RoktEventManager.h +16 -0
  19. package/ios/RNMParticle/RoktEventManager.m +174 -0
  20. package/ios/RNMParticle/RoktLayoutManager.m +22 -0
  21. package/ios/RNMParticle/RoktNativeLayoutComponentView.h +18 -0
  22. package/ios/RNMParticle/RoktNativeLayoutComponentView.mm +50 -0
  23. package/ios/RNMParticle.xcodeproj/project.pbxproj +29 -6
  24. package/js/codegenSpecs/NativeMParticle.ts +214 -0
  25. package/js/codegenSpecs/rokt/NativeMPRokt.ts +32 -0
  26. package/js/codegenSpecs/rokt/RoktLayoutNativeComponent.ts +29 -0
  27. package/js/index.tsx +940 -0
  28. package/js/rokt/rokt-layout-view.android.tsx +133 -0
  29. package/js/rokt/rokt-layout-view.ios.tsx +121 -0
  30. package/js/rokt/rokt-layout-view.tsx +15 -0
  31. package/js/rokt/rokt.ts +87 -0
  32. package/js/utils/architecture.ts +22 -0
  33. package/lib/codegenSpecs/NativeMParticle.d.ts +148 -0
  34. package/lib/codegenSpecs/NativeMParticle.js +5 -0
  35. package/lib/codegenSpecs/NativeMParticle.js.map +1 -0
  36. package/lib/codegenSpecs/rokt/NativeMPRokt.d.ts +24 -0
  37. package/lib/codegenSpecs/rokt/NativeMPRokt.js +5 -0
  38. package/lib/codegenSpecs/rokt/NativeMPRokt.js.map +1 -0
  39. package/lib/codegenSpecs/rokt/RoktLayoutNativeComponent.d.ts +18 -0
  40. package/lib/codegenSpecs/rokt/RoktLayoutNativeComponent.js +8 -0
  41. package/lib/codegenSpecs/rokt/RoktLayoutNativeComponent.js.map +1 -0
  42. package/lib/index.d.ts +410 -0
  43. package/lib/index.js +645 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/rokt/rokt-layout-view.android.d.ts +39 -0
  46. package/lib/rokt/rokt-layout-view.android.js +109 -0
  47. package/lib/rokt/rokt-layout-view.android.js.map +1 -0
  48. package/lib/rokt/rokt-layout-view.d.ts +5 -0
  49. package/lib/rokt/rokt-layout-view.ios.d.ts +32 -0
  50. package/lib/rokt/rokt-layout-view.ios.js +84 -0
  51. package/lib/rokt/rokt-layout-view.ios.js.map +1 -0
  52. package/lib/rokt/rokt-layout-view.js +12 -0
  53. package/lib/rokt/rokt-layout-view.js.map +1 -0
  54. package/lib/rokt/rokt.d.ts +40 -0
  55. package/lib/rokt/rokt.js +54 -0
  56. package/lib/rokt/rokt.js.map +1 -0
  57. package/lib/utils/architecture.d.ts +9 -0
  58. package/lib/utils/architecture.js +19 -0
  59. package/lib/utils/architecture.js.map +1 -0
  60. package/package.json +32 -10
  61. package/react-native-mparticle.podspec +7 -6
  62. package/.github/PULL_REQUEST_TEMPLATE.md +0 -8
  63. package/.github/dependabot.yml +0 -12
  64. package/.github/workflows/daily.yml +0 -19
  65. package/.github/workflows/dependabot-automerge.yml +0 -12
  66. package/.github/workflows/pull-request.yml +0 -60
  67. package/.github/workflows/release.yml +0 -60
  68. package/.github/workflows/sonarcloud.yml +0 -16
  69. package/android/.gradle/7.5.1/checksums/checksums.lock +0 -0
  70. package/android/.gradle/7.5.1/checksums/md5-checksums.bin +0 -0
  71. package/android/.gradle/7.5.1/checksums/sha1-checksums.bin +0 -0
  72. package/android/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  73. package/android/.gradle/7.5.1/dependencies-accessors/gc.properties +0 -0
  74. package/android/.gradle/7.5.1/executionHistory/executionHistory.lock +0 -0
  75. package/android/.gradle/7.5.1/fileChanges/last-build.bin +0 -0
  76. package/android/.gradle/7.5.1/fileHashes/fileHashes.lock +0 -0
  77. package/android/.gradle/7.5.1/gc.properties +0 -0
  78. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  79. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  80. package/android/.gradle/vcs-1/gc.properties +0 -0
  81. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  82. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  83. package/android/gradle.properties +0 -53
  84. package/android/gradlew +0 -160
  85. package/android/gradlew.bat +0 -90
  86. package/android/libs/java-json.jar +0 -0
  87. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug-sources.jar +0 -0
  88. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug-sources.jar.md5 +0 -1
  89. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug-sources.jar.sha1 +0 -1
  90. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug-sources.jar.sha256 +0 -1
  91. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug-sources.jar.sha512 +0 -1
  92. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug.aar +0 -0
  93. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug.aar.md5 +0 -1
  94. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug.aar.sha1 +0 -1
  95. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug.aar.sha256 +0 -1
  96. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-debug.aar.sha512 +0 -1
  97. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release-sources.jar +0 -0
  98. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release-sources.jar.md5 +0 -1
  99. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release-sources.jar.sha1 +0 -1
  100. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release-sources.jar.sha256 +0 -1
  101. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release-sources.jar.sha512 +0 -1
  102. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release.aar +0 -0
  103. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release.aar.md5 +0 -1
  104. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release.aar.sha1 +0 -1
  105. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release.aar.sha256 +0 -1
  106. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5-release.aar.sha512 +0 -1
  107. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.module +0 -204
  108. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.module.md5 +0 -1
  109. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.module.sha1 +0 -1
  110. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.module.sha256 +0 -1
  111. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.module.sha512 +0 -1
  112. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.pom +0 -44
  113. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.pom.md5 +0 -1
  114. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.pom.sha1 +0 -1
  115. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.pom.sha256 +0 -1
  116. package/android/libs/react-native-android/com/facebook/react/hermes-engine/0.70.5/hermes-engine-0.70.5.pom.sha512 +0 -1
  117. package/android/libs/react-native-android/com/facebook/react/hermes-engine/maven-metadata.xml +0 -13
  118. package/android/libs/react-native-android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +0 -1
  119. package/android/libs/react-native-android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +0 -1
  120. package/android/libs/react-native-android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +0 -1
  121. package/android/libs/react-native-android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +0 -1
  122. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug-sources.jar +0 -0
  123. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug-sources.jar.md5 +0 -1
  124. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug-sources.jar.sha1 +0 -1
  125. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug-sources.jar.sha256 +0 -1
  126. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug-sources.jar.sha512 +0 -1
  127. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug.aar +0 -0
  128. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug.aar.md5 +0 -1
  129. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug.aar.sha1 +0 -1
  130. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug.aar.sha256 +0 -1
  131. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-debug.aar.sha512 +0 -1
  132. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release-sources.jar +0 -0
  133. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release-sources.jar.md5 +0 -1
  134. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release-sources.jar.sha1 +0 -1
  135. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release-sources.jar.sha256 +0 -1
  136. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release-sources.jar.sha512 +0 -1
  137. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release.aar +0 -0
  138. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release.aar.md5 +0 -1
  139. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release.aar.sha1 +0 -1
  140. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release.aar.sha256 +0 -1
  141. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5-release.aar.sha512 +0 -1
  142. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.module +0 -628
  143. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.module.md5 +0 -1
  144. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.module.sha1 +0 -1
  145. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.module.sha256 +0 -1
  146. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.module.sha512 +0 -1
  147. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.pom +0 -156
  148. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.pom.md5 +0 -1
  149. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.pom.sha1 +0 -1
  150. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.pom.sha256 +0 -1
  151. package/android/libs/react-native-android/com/facebook/react/react-native/0.70.5/react-native-0.70.5.pom.sha512 +0 -1
  152. package/android/libs/react-native-android/com/facebook/react/react-native/maven-metadata.xml +0 -13
  153. package/android/libs/react-native-android/com/facebook/react/react-native/maven-metadata.xml.md5 +0 -1
  154. package/android/libs/react-native-android/com/facebook/react/react-native/maven-metadata.xml.sha1 +0 -1
  155. package/android/libs/react-native-android/com/facebook/react/react-native/maven-metadata.xml.sha256 +0 -1
  156. package/android/libs/react-native-android/com/facebook/react/react-native/maven-metadata.xml.sha512 +0 -1
  157. package/android/src/main/java/com/mparticle/react/MParticleModule.java +0 -987
  158. package/android/src/main/java/com/mparticle/react/MParticlePackage.java +0 -34
  159. package/android/src/test/java/com/mparticle/react/IdentityApiTest.java +0 -230
  160. package/android/src/test/java/com/mparticle/react/MParticleUserTest.java +0 -233
  161. package/android/src/test/java/com/mparticle/react/testutils/MockMParticleUser.java +0 -103
  162. package/android/src/test/java/com/mparticle/react/testutils/MockMap.java +0 -169
  163. package/android/src/test/java/com/mparticle/react/testutils/MockReadableArray.java +0 -53
  164. package/android/src/test/java/com/mparticle/react/testutils/MockWritableMap.java +0 -4
  165. package/android/src/test/java/com/mparticle/react/testutils/Mutable.java +0 -13
  166. package/ios/RNMParticle/RNMParticle.m +0 -678
  167. package/ios/RNMParticle.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  168. package/ios/RNMParticle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  169. package/ios/RNMParticle.xcodeproj/project.xcworkspace/xcuserdata/bstalnaker.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  170. package/ios/RNMParticle.xcodeproj/xcuserdata/bstalnaker.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  171. package/js/index.js +0 -697
  172. package/release.sh +0 -6
@@ -1,34 +0,0 @@
1
- package com.mparticle.react;
2
-
3
- import com.facebook.react.ReactPackage;
4
- import com.facebook.react.bridge.JavaScriptModule;
5
- import com.facebook.react.bridge.NativeModule;
6
- import com.facebook.react.bridge.ReactApplicationContext;
7
- import com.facebook.react.uimanager.ViewManager;
8
-
9
- import java.util.ArrayList;
10
- import java.util.Collections;
11
- import java.util.List;
12
-
13
- public class MParticlePackage implements ReactPackage {
14
- @Override
15
- public List<NativeModule> createNativeModules(
16
- ReactApplicationContext reactContext) {
17
- List<NativeModule> modules = new ArrayList<>();
18
-
19
- modules.add(new MParticleModule(reactContext));
20
-
21
- return modules;
22
- }
23
-
24
- // Deprecated RN 0.47
25
- public List<Class<? extends JavaScriptModule>> createJSModules() {
26
- return Collections.emptyList();
27
- }
28
-
29
- @Override
30
- public List<ViewManager> createViewManagers(
31
- ReactApplicationContext reactContext) {
32
- return Collections.emptyList();
33
- }
34
- }
@@ -1,230 +0,0 @@
1
- package com.mparticle.react;
2
-
3
- import androidx.annotation.NonNull;
4
-
5
- import com.facebook.react.bridge.Callback;
6
- import com.facebook.react.bridge.ReactApplicationContext;
7
- import com.facebook.react.bridge.ReadableMap;
8
- import com.mparticle.MParticle;
9
- import com.mparticle.identity.AliasRequest;
10
- import com.mparticle.identity.IdentityApi;
11
- import com.mparticle.identity.MParticleUser;
12
- import com.mparticle.react.testutils.MockMParticleUser;
13
- import com.mparticle.react.testutils.MockMap;
14
- import com.mparticle.react.testutils.Mutable;
15
-
16
- import org.json.JSONException;
17
- import org.json.JSONObject;
18
- import org.junit.Before;
19
- import org.junit.Test;
20
- import org.junit.runner.RunWith;
21
- import org.mockito.ArgumentCaptor;
22
- import org.mockito.Mockito;
23
- import org.mockito.MockitoAnnotations;
24
- import org.mockito.junit.MockitoJUnitRunner;
25
-
26
- import java.util.Random;
27
-
28
- import static junit.framework.TestCase.assertEquals;
29
- import static org.junit.Assert.assertNull;
30
- import static org.junit.Assert.assertTrue;
31
-
32
- @RunWith(MockitoJUnitRunner.class)
33
- public class IdentityApiTest {
34
- MParticleModule identityApi;
35
- Random random = new Random();
36
-
37
- @Before
38
- public void before() {
39
- MockitoAnnotations.openMocks(this);
40
- MParticle.setInstance(Mockito.mock(MParticle.class));
41
- Mockito.when(MParticle.getInstance().Identity()).thenReturn(Mockito.mock(IdentityApi.class));
42
- Mockito.lenient().when(MParticle.getInstance().Identity().getUser(0L)).thenReturn(null);
43
- identityApi = new MParticleModule(Mockito.mock(ReactApplicationContext.class));
44
- }
45
-
46
-
47
- @Test
48
- public void testGetCurrentUser() {
49
- final Mutable<Boolean> callbackCalled = new Mutable<>(false);
50
- final Long mockId = random.nextLong();
51
-
52
- MParticleUser mockUser = new MockMParticleUser() {
53
- @NonNull
54
- @Override
55
- public long getId() {
56
- return mockId;
57
- }
58
- };
59
- Mockito.when(MParticle.getInstance().Identity().getCurrentUser()).thenReturn(mockUser);
60
- identityApi.getCurrentUserWithCompletion(new Callback() {
61
- @Override
62
- public void invoke(Object... args) {
63
- assertNull(args[0]);
64
- assertEquals(mockId.toString(), args[1]);
65
- callbackCalled.value = true;
66
- }
67
- });
68
-
69
- assertTrue(callbackCalled.value);
70
- callbackCalled.value = false;
71
-
72
- Mockito.when(MParticle.getInstance().Identity().getCurrentUser()).thenReturn(null);
73
- identityApi.getCurrentUserWithCompletion(new Callback() {
74
- @Override
75
- public void invoke(Object... args) {
76
- assertNull(args[0]);
77
- assertNull(args[1]);
78
- callbackCalled.value = true;
79
- }
80
- });
81
- assertTrue(callbackCalled.value);
82
- }
83
-
84
-
85
- @Test
86
- public void testAliasRequest() throws JSONException {
87
- ArgumentCaptor<AliasRequest> aliasCaptor = ArgumentCaptor.forClass(AliasRequest.class);
88
- final Mutable<Object[]> callbackResult = new Mutable<>();
89
-
90
- Mockito.when(MParticle.getInstance().Identity().aliasUsers(Mockito.any(AliasRequest.class))).thenReturn(true);
91
-
92
- JSONObject aliasJson = new JSONObject()
93
- .put("sourceMpid", "1")
94
- .put("destinationMpid", "2")
95
- .put("startTime", "3")
96
- .put("endTime", "4");
97
- ReadableMap map = new MockMap(aliasJson);
98
-
99
- identityApi.aliasUsers(map, new Callback() {
100
- @Override
101
- public void invoke(Object... args) {
102
- callbackResult.value = args;
103
- }
104
- });
105
-
106
- Mockito.verify(MParticle.getInstance().Identity()).aliasUsers(aliasCaptor.capture());
107
- assertEquals(1, callbackResult.value.length);
108
- assertEquals(true, callbackResult.value[0]);
109
-
110
- assertEquals(1, aliasCaptor.getValue().getSourceMpid());
111
- assertEquals(2, aliasCaptor.getValue().getDestinationMpid());
112
- assertEquals(3, aliasCaptor.getValue().getStartTime());
113
- assertEquals(4, aliasCaptor.getValue().getEndTime());
114
-
115
- //start time and end time can be longs
116
- aliasJson
117
- .put("startTime", 3)
118
- .put("endTime", 4);
119
- }
120
-
121
- @Test
122
- public void testAliasRequestPartial() throws JSONException {
123
- ArgumentCaptor<AliasRequest> aliasCaptor = ArgumentCaptor.forClass(AliasRequest.class);
124
- final Mutable<Object[]> callbackResult = new Mutable<>();
125
- Long startTime = System.currentTimeMillis();
126
-
127
- MParticleUser sourceUser = Mockito.mock(MParticleUser.class);
128
- Mockito.when(sourceUser.getId()).thenReturn(1L);
129
- Mockito.when(sourceUser.getFirstSeenTime()).thenReturn(startTime - 200);
130
- Mockito.when(sourceUser.getLastSeenTime()).thenReturn(startTime - 100L);
131
-
132
- MParticleUser destinationUser = Mockito.mock(MParticleUser.class);
133
- Mockito.when(destinationUser.getId()).thenReturn(2L);
134
-
135
- Mockito.when(MParticle.getInstance().Identity().getUser(1L)).thenReturn(sourceUser);
136
- Mockito.when(MParticle.getInstance().Identity().getUser(2L)).thenReturn(destinationUser);
137
-
138
- Mockito.when(MParticle.getInstance().Identity().aliasUsers(Mockito.any(AliasRequest.class))).thenReturn(true);
139
-
140
- JSONObject aliasJson = new JSONObject()
141
- .put("sourceMpid", "1")
142
- .put("destinationMpid", "2");
143
- ReadableMap map = new MockMap(aliasJson);
144
-
145
- identityApi.aliasUsers(map, new Callback() {
146
- @Override
147
- public void invoke(Object... args) {
148
- callbackResult.value = args;
149
- }
150
- });
151
-
152
- Mockito.verify(MParticle.getInstance().Identity()).aliasUsers(aliasCaptor.capture());
153
- assertEquals(1, callbackResult.value.length);
154
- assertEquals(true, callbackResult.value[0]);
155
-
156
- assertEquals(1, aliasCaptor.getValue().getSourceMpid());
157
- assertEquals(2, aliasCaptor.getValue().getDestinationMpid());
158
- assertEquals(startTime - 200, aliasCaptor.getValue().getStartTime());
159
- assertEquals(startTime - 100, aliasCaptor.getValue().getEndTime());
160
- }
161
-
162
- @Test
163
- public void testAliasRejectedReactNative() throws JSONException {
164
- final Mutable<Object[]> callbackResult = new Mutable<>();
165
- Callback callback = new Callback() {
166
- @Override
167
- public void invoke(Object... args) {
168
- callbackResult.value = args;
169
- }
170
- };
171
-
172
- //MPIDs need to be Strings, this will fail
173
- JSONObject aliasJson = new JSONObject()
174
- .put("sourceMpid", 1)
175
- .put("destinationMpid", "2")
176
- .put("startTime", "3")
177
- .put("endTime", "4");
178
-
179
- identityApi.aliasUsers(new MockMap(aliasJson), callback);
180
-
181
- Mockito.lenient().when(MParticle.getInstance().Identity().aliasUsers(Mockito.any(AliasRequest.class))).thenThrow(new RuntimeException("aliasUsers() should not be called"));
182
- assertEquals(2, callbackResult.value.length);
183
- assertEquals(false, callbackResult.value[0]);
184
- assertTrue(((String)callbackResult.value[1]).length() > 5);
185
- callbackResult.value = null;
186
-
187
- aliasJson
188
- .put("sourceMpid", "1")
189
- .put("destinationMpid", 2);
190
-
191
- identityApi.aliasUsers(new MockMap(aliasJson), callback);
192
-
193
- Mockito.lenient().when(MParticle.getInstance().Identity().aliasUsers(Mockito.any(AliasRequest.class))).thenThrow(new RuntimeException("aliasUsers() should not be called"));
194
- assertEquals(2, callbackResult.value.length);
195
- assertEquals(false, callbackResult.value[0]);
196
- assertTrue(((String)callbackResult.value[1]).length() > 5);
197
- callbackResult.value = null;
198
- }
199
-
200
- @Test
201
- public void testAliasRejectedNativeSdk() throws JSONException {
202
- ArgumentCaptor<AliasRequest> aliasCaptor = ArgumentCaptor.forClass(AliasRequest.class);
203
- final Mutable<Object[]> callbackResult = new Mutable<>();
204
-
205
- Mockito.when(MParticle.getInstance().Identity().aliasUsers(Mockito.any(AliasRequest.class))).thenReturn(false);
206
-
207
- JSONObject aliasJson = new JSONObject()
208
- .put("sourceMpid", "1")
209
- .put("destinationMpid", "2")
210
- .put("startTime", "3")
211
- .put("endTime", "4");
212
- ReadableMap map = new MockMap(aliasJson);
213
-
214
- identityApi.aliasUsers(map, new Callback() {
215
- @Override
216
- public void invoke(Object... args) {
217
- callbackResult.value = args;
218
- }
219
- });
220
-
221
- Mockito.verify(MParticle.getInstance().Identity()).aliasUsers(aliasCaptor.capture());
222
- assertEquals(1, callbackResult.value.length);
223
- assertEquals(false, callbackResult.value[0]);
224
-
225
- assertEquals(1, aliasCaptor.getValue().getSourceMpid());
226
- assertEquals(2, aliasCaptor.getValue().getDestinationMpid());
227
- assertEquals(3, aliasCaptor.getValue().getStartTime());
228
- assertEquals(4, aliasCaptor.getValue().getEndTime());
229
- }
230
- }
@@ -1,233 +0,0 @@
1
- package com.mparticle.react;
2
-
3
- import androidx.annotation.NonNull;
4
-
5
- import com.facebook.react.bridge.Callback;
6
- import com.facebook.react.bridge.ReactApplicationContext;
7
- import com.facebook.react.bridge.WritableMap;
8
- import com.mparticle.MParticle;
9
- import com.mparticle.identity.IdentityApi;
10
- import com.mparticle.identity.MParticleUser;
11
- import com.mparticle.react.testutils.MockMParticleUser;
12
- import com.mparticle.react.testutils.MockMap;
13
- import com.mparticle.react.testutils.MockReadableArray;
14
- import com.mparticle.react.testutils.Mutable;
15
-
16
- import org.junit.Before;
17
- import org.junit.Test;
18
- import org.junit.runner.RunWith;
19
- import org.mockito.Mockito;
20
- import org.mockito.MockitoAnnotations;
21
- import org.mockito.junit.MockitoJUnitRunner;
22
-
23
- import java.util.HashMap;
24
- import java.util.Map;
25
- import java.util.Random;
26
-
27
- import static junit.framework.TestCase.assertEquals;
28
- import static org.junit.Assert.assertNotNull;
29
- import static org.junit.Assert.assertNull;
30
- import static org.junit.Assert.assertTrue;
31
-
32
- @RunWith(MockitoJUnitRunner.class)
33
- public class MParticleUserTest {
34
- MParticleModule mParticleUser;
35
- Random random = new Random();
36
-
37
- @Before
38
- public void before() {
39
- MockitoAnnotations.openMocks(this);
40
- MParticle.setInstance(Mockito.mock(MParticle.class));
41
- Mockito.when(MParticle.getInstance().Identity()).thenReturn(Mockito.mock(IdentityApi.class));
42
- Mockito.lenient().when(MParticle.getInstance().Identity().getUser(0L)).thenReturn(null);
43
- mParticleUser = new MParticleModule(Mockito.mock(ReactApplicationContext.class)) {
44
- @Override
45
- public WritableMap getWritableMap() {
46
- return new MockMap();
47
- }
48
- };
49
- }
50
-
51
- @Test
52
- public void tesNullMParticleUserSetters() {
53
- Exception exception = null;
54
- try {
55
- mParticleUser.setUserAttribute(null, "key", "values");
56
- mParticleUser.setUserTag(null, "test");
57
- mParticleUser.setUserAttributeArray(null, "keuy", new MockReadableArray());
58
- } catch (Exception e) {
59
- exception = e;
60
- }
61
- assertNull(exception);
62
- }
63
-
64
- @Test
65
- public void testSetUserAttribute() {
66
- String testKey = "test key";
67
- String testValue = "test value";
68
-
69
- final Mutable<String> uaKey = new Mutable<>();
70
- final Mutable<Object> uaValue = new Mutable<>();
71
- MParticleUser mockUser = new MockMParticleUser() {
72
- @Override
73
- public boolean setUserAttribute(@NonNull String s, @NonNull Object o) {
74
- uaKey.value = s;
75
- uaValue.value = o;
76
- return true;
77
- }
78
- };
79
- Mockito.when(MParticle.getInstance().Identity().getUser(Mockito.anyLong())).thenReturn(mockUser);
80
-
81
- mParticleUser.setUserAttribute("1", testKey, testValue);
82
-
83
- assertEquals(testKey, uaKey.value);
84
- assertEquals(testValue, uaValue.value);
85
- }
86
-
87
- @Test
88
- public void getUserIdentitiesTest() {
89
- final Map<MParticle.IdentityType, String> identities = new HashMap<>();
90
- for (MParticle.IdentityType identityType: MParticle.IdentityType.values()) {
91
- identities.put(identityType, random.nextInt() + "");
92
- }
93
- MParticleUser mockUser = new MockMParticleUser() {
94
- @NonNull
95
- @Override
96
- public Map<MParticle.IdentityType, String> getUserIdentities() {
97
- return identities;
98
- }
99
- };
100
-
101
- Mockito.when(MParticle.getInstance().Identity().getUser(Mockito.anyLong())).thenReturn(mockUser);
102
-
103
- final Mutable<WritableMap> callbackResult = new Mutable<>();
104
- mParticleUser.getUserIdentities("1", new Callback() {
105
- @Override
106
- public void invoke(Object... args) {
107
- assertEquals(2, args.length);
108
- assertNull(args[0]);
109
- callbackResult.value = (WritableMap)args[1];
110
- }
111
- });
112
-
113
- assertNotNull(callbackResult.value);
114
- for (Map.Entry<MParticle.IdentityType, String> entry: identities.entrySet()) {
115
- assertEquals(entry.getValue(), callbackResult.value.getString(String.valueOf(entry.getKey().getValue())));
116
- }
117
- }
118
-
119
- @Test
120
- public void testGetUserIdentitiesNullUser() {
121
- final Mutable<Boolean> callbackInvoked = new Mutable<>(false);
122
-
123
- mParticleUser.getUserIdentities(null, new Callback() {
124
- @Override
125
- public void invoke(Object... args) {
126
- assertEquals(0, args.length);
127
- callbackInvoked.value = true;
128
- }
129
- });
130
-
131
- assertTrue(callbackInvoked.value);
132
- }
133
-
134
- @Test
135
- public void testSetUserTag() {
136
- final Mutable<String> tag = new Mutable<>();
137
- String testTag = "testTag";
138
-
139
- MParticleUser mockUser = new MockMParticleUser() {
140
- @Override
141
- public boolean setUserTag(@NonNull String s) {
142
- tag.value = s;
143
- return true;
144
- }
145
- };
146
-
147
- Mockito.when(MParticle.getInstance().Identity().getUser(Mockito.anyLong())).thenReturn(mockUser);
148
-
149
- mParticleUser.setUserTag("1", testTag);
150
-
151
- assertEquals(testTag, tag.value);
152
- }
153
-
154
-
155
-
156
- @Test
157
- public void getFirstSeenTime() {
158
- final Mutable<Boolean> callbackInvoked = new Mutable<>(false);
159
-
160
- MParticleUser mockUser = new MockMParticleUser() {
161
- @Override
162
- public long getFirstSeenTime() {
163
- return 2;
164
- }
165
- };
166
- Mockito.when(MParticle.getInstance().Identity().getUser(Mockito.anyLong())).thenReturn(mockUser);
167
-
168
- mParticleUser.getFirstSeen("1", new Callback() {
169
- @Override
170
- public void invoke(Object... args) {
171
- assertEquals(1, args.length);
172
- assertEquals("2", args[0]);
173
- callbackInvoked.value = true;
174
- }
175
- });
176
-
177
- assertTrue(callbackInvoked.value);
178
- }
179
-
180
- @Test
181
- public void getFirstSeenTimeNullUser() {
182
- final Mutable<Boolean> callbackInvoked = new Mutable<>(false);
183
-
184
- mParticleUser.getFirstSeen(null, new Callback() {
185
- @Override
186
- public void invoke(Object... args) {
187
- assertEquals(0, args.length);
188
- callbackInvoked.value = true;
189
- }
190
- });
191
-
192
- assertTrue(callbackInvoked.value);
193
- }
194
-
195
- @Test
196
- public void getLastSeenTime() {
197
- final Mutable<Boolean> callbackInvoked = new Mutable<>(false);
198
-
199
- MParticleUser mockUser = new MockMParticleUser() {
200
- @Override
201
- public long getLastSeenTime() {
202
- return 2;
203
- }
204
- };
205
- Mockito.when(MParticle.getInstance().Identity().getUser(Mockito.anyLong())).thenReturn(mockUser);
206
-
207
- mParticleUser.getLastSeen("1", new Callback() {
208
- @Override
209
- public void invoke(Object... args) {
210
- assertEquals(1, args.length);
211
- assertEquals("2", args[0]);
212
- callbackInvoked.value = true;
213
- }
214
- });
215
-
216
- assertTrue(callbackInvoked.value);
217
- }
218
-
219
- @Test
220
- public void getLastSeenTimeNullUser() {
221
- final Mutable<Boolean> callbackInvoked = new Mutable<>(false);
222
-
223
- mParticleUser.getLastSeen(null , new Callback() {
224
- @Override
225
- public void invoke(Object... args) {
226
- assertEquals(0, args.length);
227
- callbackInvoked.value = true;
228
- }
229
- });
230
-
231
- assertTrue(callbackInvoked.value);
232
- }
233
- }
@@ -1,103 +0,0 @@
1
- package com.mparticle.react.testutils;
2
-
3
- import androidx.annotation.NonNull;
4
- import androidx.annotation.Nullable;
5
-
6
- import com.mparticle.MParticle;
7
- import com.mparticle.UserAttributeListener;
8
- import com.mparticle.UserAttributeListenerType;
9
- import com.mparticle.consent.ConsentState;
10
- import com.mparticle.identity.MParticleUser;
11
-
12
- import java.util.Map;
13
-
14
- public class MockMParticleUser implements MParticleUser {
15
- Long mpid = 0L;
16
-
17
- public MockMParticleUser() {}
18
-
19
- public MockMParticleUser(Long mpid) {
20
- this.mpid = mpid;
21
- }
22
-
23
- @NonNull
24
- @Override
25
- public long getId() {
26
- return mpid;
27
- }
28
-
29
- @NonNull
30
- @Override
31
- public Map<String, Object> getUserAttributes() {
32
- return null;
33
- }
34
-
35
- @Nullable
36
- @Override
37
- public Map<String, Object> getUserAttributes(@Nullable UserAttributeListenerType userAttributeListener) {
38
- return null;
39
- }
40
-
41
- @Override
42
- public boolean setUserAttributes(@NonNull Map<String, Object> map) {
43
- return false;
44
- }
45
-
46
- @NonNull
47
- @Override
48
- public Map<MParticle.IdentityType, String> getUserIdentities() {
49
- return null;
50
- }
51
-
52
- @Override
53
- public boolean setUserAttribute(@NonNull String s, @NonNull Object o) {
54
- return false;
55
- }
56
-
57
- @Override
58
- public boolean setUserAttributeList(@NonNull String s, @NonNull Object o) {
59
- return false;
60
- }
61
-
62
- @Override
63
- public boolean incrementUserAttribute(@NonNull String s, Number i) {
64
- return false;
65
- }
66
-
67
- @Override
68
- public boolean removeUserAttribute(@NonNull String s) {
69
- return false;
70
- }
71
-
72
- @Override
73
- public boolean setUserTag(@NonNull String s) {
74
- return false;
75
- }
76
-
77
- @NonNull
78
- @Override
79
- public ConsentState getConsentState() {
80
- return null;
81
- }
82
-
83
- @Override
84
- public void setConsentState(@Nullable ConsentState consentState) {
85
-
86
- }
87
-
88
- @Override
89
- public boolean isLoggedIn() {
90
- return false;
91
- }
92
-
93
- @Override
94
- public long getFirstSeenTime() {
95
- return 0;
96
- }
97
-
98
- @Override
99
- public long getLastSeenTime() {
100
- return 0;
101
- }
102
- }
103
-