fidel-react-native 1.6.4 → 2.0.0

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 (113) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +54 -55
  3. package/android/build.gradle +11 -8
  4. package/android/src/main/java/com/fidelreactlibrary/FidelModule.java +52 -44
  5. package/android/src/main/java/com/fidelreactlibrary/FidelPackage.java +64 -49
  6. package/android/src/main/java/com/fidelreactlibrary/adapters/CardVerificationConfigurationProperties.java +22 -0
  7. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardSchemesAdapter.java +46 -29
  8. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapter.java +57 -0
  9. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCountryAdapter.java +47 -19
  10. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapter.java +46 -0
  11. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupAdapter.java +108 -6
  12. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupProperties.java +67 -0
  13. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapter.java +35 -0
  14. package/android/src/main/java/com/fidelreactlibrary/adapters/ImageFromReadableMapAdapter.java +5 -1
  15. package/android/src/main/java/com/fidelreactlibrary/adapters/ResultsAdapter.java +288 -0
  16. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardSchemesAdapter.java +6 -2
  17. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardVerificationChoiceAdapter.java +11 -0
  18. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CountryAdapter.java +14 -3
  19. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataAdapter.java +5 -0
  20. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/ProgramTypeAdapter.java +11 -0
  21. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/VerificationConfigurationAdapter.java +9 -0
  22. package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEvent.java +17 -0
  23. package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEventEmitter.java +24 -0
  24. package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationChoiceObserver.java +29 -0
  25. package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationStartedObserver.java +31 -0
  26. package/android/src/main/java/com/fidelreactlibrary/events/ResultsObserver.java +72 -0
  27. package/android/src/test/java/com/fidelreactlibrary/FidelModuleTests.java +50 -31
  28. package/android/src/test/java/com/fidelreactlibrary/FidelPackageTests.java +0 -1
  29. package/android/src/test/java/com/fidelreactlibrary/{FidelCardSchemesAdapterTests.java → adapters/FidelCardSchemesAdapterTests.java} +51 -47
  30. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapterTest.java +70 -0
  31. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCountryAdapterTests.java +157 -0
  32. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapterTests.java +54 -0
  33. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelSetupAdapterTests.java +900 -0
  34. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapterTest.java +51 -0
  35. package/android/src/test/java/com/fidelreactlibrary/adapters/ResultsAdapterTests.java +74 -0
  36. package/android/src/test/java/com/fidelreactlibrary/{ErrorEventEmitterTests.java → events/BridgeLibraryEventEmitterTests.java} +18 -7
  37. package/android/src/test/java/com/fidelreactlibrary/events/BridgeLibraryEventTests.java +17 -0
  38. package/android/src/test/java/com/fidelreactlibrary/events/CardVerificationStartedObserverTests.java +49 -0
  39. package/android/src/test/java/com/fidelreactlibrary/events/ResultsObserverTests.java +38 -0
  40. package/android/src/test/java/com/fidelreactlibrary/fakes/CardSchemeAdapterStub.java +17 -6
  41. package/android/src/test/java/com/fidelreactlibrary/fakes/ConstantsProviderStub.java +2 -2
  42. package/android/src/test/java/com/fidelreactlibrary/fakes/CountryAdapterStub.java +25 -10
  43. package/android/src/test/java/com/fidelreactlibrary/fakes/{DataConverterStub.java → DataAdapterStub.java} +3 -3
  44. package/android/src/test/java/com/fidelreactlibrary/fakes/ProgramTypeAdapterStub.java +31 -0
  45. package/android/src/test/java/com/fidelreactlibrary/fakes/ReactContextMock.java +1 -1
  46. package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableArrayStub.java +82 -0
  47. package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableMapStub.java +175 -40
  48. package/android/src/test/java/com/fidelreactlibrary/fakes/VerificationConfigurationAdapterStub.java +13 -0
  49. package/fidel-react-native.podspec +1 -1
  50. package/index.js +71 -19
  51. package/ios/Adapters/CardSchemesAdapter.swift +13 -0
  52. package/ios/Adapters/ConsentDetailsAdapter.swift +19 -0
  53. package/ios/Adapters/EnrollmentResultAdapter.swift +28 -0
  54. package/ios/Adapters/ErrorResultAdapter.swift +71 -0
  55. package/ios/{FLRNImageAdapter.h → Adapters/FLRNImageFromRNAdapter.h} +2 -3
  56. package/ios/Adapters/FidelSetupAdapter.swift +89 -0
  57. package/ios/Adapters/FidelVerificationConfigurationAdapter.swift +19 -0
  58. package/ios/Adapters/VerificationResultAdapter.swift +17 -0
  59. package/ios/CardVerificationConfigurationProperties.swift +14 -0
  60. package/ios/Constants/CardSchemeConstants.swift +38 -0
  61. package/ios/Constants/CardVerificationChoiceConstants.swift +24 -0
  62. package/ios/Constants/CountryConstants.swift +47 -0
  63. package/ios/Constants/EnrollmentErrorTypeConstants.swift +25 -0
  64. package/ios/Constants/ErrorTypeConstants.swift +37 -0
  65. package/ios/Constants/ExportedConstantsProvider.swift +42 -0
  66. package/ios/Constants/ProgramTypeConstants.swift +30 -0
  67. package/ios/Constants/ResultTypeConstants.swift +35 -0
  68. package/ios/Constants/VerificationErrorTypeConstants.swift +29 -0
  69. package/ios/Events/BridgeLibraryEvent.swift +14 -0
  70. package/ios/Events/CardVerificationChoiceSelectedObserver.swift +23 -0
  71. package/ios/Events/CardVerificationStartedObserver.swift +21 -0
  72. package/ios/Events/EventObserver.swift +13 -0
  73. package/ios/Events/JSResultProperties.swift +15 -0
  74. package/ios/Events/JSResultTypes.swift +14 -0
  75. package/ios/Events/ResultsObserver.swift +37 -0
  76. package/ios/FidelSetupProperties.swift +33 -0
  77. package/ios/NativeFidelBridge.m +11 -0
  78. package/ios/NativeFidelBridge.swift +93 -0
  79. package/package.json +1 -4
  80. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelOptionsAdapter.java +0 -121
  81. package/android/src/main/java/com/fidelreactlibrary/adapters/WritableMapDataConverter.java +0 -94
  82. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataConverter.java +0 -5
  83. package/android/src/main/java/com/fidelreactlibrary/events/CallbackActivityEventListener.java +0 -64
  84. package/android/src/main/java/com/fidelreactlibrary/events/CallbackInput.java +0 -7
  85. package/android/src/main/java/com/fidelreactlibrary/events/ErrorEventEmitter.java +0 -22
  86. package/android/src/test/java/com/fidelreactlibrary/CallbackActivityEventListenerTests.java +0 -133
  87. package/android/src/test/java/com/fidelreactlibrary/FidelCountryAdapterTests.java +0 -74
  88. package/android/src/test/java/com/fidelreactlibrary/FidelOptionsAdapterTests.java +0 -414
  89. package/android/src/test/java/com/fidelreactlibrary/FidelSetupAdapterTests.java +0 -65
  90. package/android/src/test/java/com/fidelreactlibrary/WritableMapDataConverterTests.java +0 -186
  91. package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackInputSpy.java +0 -12
  92. package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackSpy.java +0 -18
  93. package/android/src/test/java/com/fidelreactlibrary/fakes/IntentMock.java +0 -20
  94. package/ios/FLRNCardSchemesAdapter.h +0 -16
  95. package/ios/FLRNCardSchemesFromJSAdapter.h +0 -14
  96. package/ios/FLRNCardSchemesFromJSAdapter.m +0 -39
  97. package/ios/FLRNConstantsProvider.h +0 -15
  98. package/ios/FLRNImageFromRNAdapter.h +0 -14
  99. package/ios/FLRNObjectToDictionaryAdapter.h +0 -15
  100. package/ios/FLRNOptionsAdapter.h +0 -24
  101. package/ios/FLRNOptionsAdapter.m +0 -133
  102. package/ios/FLRNRuntimeObjectToDictionaryAdapter.h +0 -14
  103. package/ios/FLRNRuntimeObjectToDictionaryAdapter.m +0 -36
  104. package/ios/FLRNSDKOptions.h +0 -24
  105. package/ios/FLRNSDKSetupOptions.h +0 -14
  106. package/ios/FLRNSetupAdapter.h +0 -17
  107. package/ios/FLRNSetupAdapter.m +0 -50
  108. package/ios/Fidel.h +0 -20
  109. package/ios/Fidel.m +0 -79
  110. package/ios/RCTConvert+CardScheme.h +0 -33
  111. package/ios/RCTConvert+Options.h +0 -52
  112. package/ios/RCTConvert+Options.m +0 -21
  113. /package/ios/{FLRNImageFromRNAdapter.m → Adapters/FLRNImageFromRNAdapter.m} +0 -0
@@ -0,0 +1,900 @@
1
+ package com.fidelreactlibrary.adapters;
2
+
3
+ import static com.fidelreactlibrary.helpers.AssertHelpers.assertMapContainsMap;
4
+ import static com.fidelreactlibrary.helpers.AssertHelpers.assertMapEqualsWithJSONObject;
5
+
6
+ import com.facebook.react.bridge.ReadableMap;
7
+ import com.fidelapi.Fidel;
8
+ import com.fidelapi.entities.CardScheme;
9
+ import com.fidelapi.entities.Country;
10
+ import com.fidelapi.entities.ProgramType;
11
+ import com.fidelreactlibrary.adapters.FidelSetupAdapter;
12
+ import com.fidelreactlibrary.adapters.FidelSetupProperties;
13
+ import com.fidelreactlibrary.fakes.CardSchemeAdapterStub;
14
+ import com.fidelreactlibrary.fakes.CountryAdapterStub;
15
+ import com.fidelreactlibrary.fakes.DataProcessorSpy;
16
+ import com.fidelreactlibrary.fakes.ProgramTypeAdapterStub;
17
+ import com.fidelreactlibrary.fakes.ReadableArrayStub;
18
+ import com.fidelreactlibrary.fakes.ReadableMapStub;
19
+
20
+ import org.json.JSONException;
21
+ import org.json.JSONObject;
22
+ import org.junit.After;
23
+ import org.junit.Test;
24
+
25
+ import static org.junit.Assert.*;
26
+
27
+ import org.junit.runner.RunWith;
28
+ import org.robolectric.RobolectricTestRunner;
29
+
30
+ import android.graphics.Bitmap;
31
+
32
+ import java.util.EnumSet;
33
+ import java.util.HashMap;
34
+ import java.util.Map;
35
+ import java.util.Set;
36
+
37
+ // Custom test runner is necessary for being able to use JSONObject and Bitmap
38
+ @RunWith(RobolectricTestRunner.class)
39
+ public class FidelSetupAdapterTests {
40
+
41
+ private static final String TEST_SDK_KEY = "pk_123123123";
42
+ private static final String TEST_PROGRAM_ID = "234234";
43
+
44
+ private static final Set<Country> TEST_COUNTRIES = EnumSet.of(Country.UNITED_KINGDOM, Country.JAPAN,
45
+ Country.CANADA);
46
+ private static final Set<CardScheme> TEST_CARD_SCHEMES_SET = EnumSet.of(CardScheme.VISA,
47
+ CardScheme.AMERICAN_EXPRESS);
48
+
49
+ private final DataProcessorSpy<ReadableMap> imageAdapterSpy = new DataProcessorSpy<>();
50
+ private final CountryAdapterStub countryAdapterStub = new CountryAdapterStub();
51
+ private final CardSchemeAdapterStub cardSchemesAdapterStub = new CardSchemeAdapterStub();
52
+ private final ProgramTypeAdapterStub programTypeAdapterStub = new ProgramTypeAdapterStub();
53
+ private FidelSetupAdapter sut = new FidelSetupAdapter(imageAdapterSpy, countryAdapterStub, cardSchemesAdapterStub,
54
+ programTypeAdapterStub);
55
+
56
+ @After
57
+ public final void tearDown() {
58
+ sut = null;
59
+ Fidel.sdkKey = null;
60
+ Fidel.programId = null;
61
+ Fidel.companyName = null;
62
+ Fidel.bannerImage = null;
63
+ Fidel.allowedCountries = EnumSet.allOf(Country.class);
64
+ Fidel.defaultSelectedCountry = Country.UNITED_KINGDOM;
65
+ Fidel.supportedCardSchemes = EnumSet.allOf(CardScheme.class);
66
+ Fidel.metaData = null;
67
+ Fidel.privacyPolicyUrl = null;
68
+ Fidel.termsAndConditionsUrl = null;
69
+ Fidel.programName = null;
70
+ Fidel.deleteInstructions = null;
71
+ Fidel.programType = ProgramType.TRANSACTION_SELECT;
72
+ Fidel.thirdPartyVerificationChoice = false;
73
+ }
74
+
75
+ @Test
76
+ public void test_WhenDataHasNoKeys_DoNotSetAnyPropertyForFidel() {
77
+ sut.process(ReadableMapStub.mapWithNoKey());
78
+ assertNull(Fidel.sdkKey);
79
+ assertNull(Fidel.programId);
80
+ assertNull(Fidel.companyName);
81
+ assertNull(Fidel.bannerImage);
82
+ assertEquals(EnumSet.allOf(Country.class), Fidel.allowedCountries);
83
+ assertEquals(Country.UNITED_KINGDOM, Fidel.defaultSelectedCountry);
84
+ assertEquals(EnumSet.allOf(CardScheme.class), Fidel.supportedCardSchemes);
85
+ assertNull(Fidel.metaData);
86
+ assertNull(Fidel.privacyPolicyUrl);
87
+ assertNull(Fidel.termsAndConditionsUrl);
88
+ assertNull(Fidel.programName);
89
+ assertNull(Fidel.deleteInstructions);
90
+ assertEquals(ProgramType.TRANSACTION_SELECT, Fidel.programType);
91
+ assertFalse(Fidel.thirdPartyVerificationChoice);
92
+ }
93
+
94
+ @Test
95
+ public void test_WhenDataHasNoSdkKey_DoNotSetThisPropertyForFidel() {
96
+ String expectedSdkKey = "some sdk key";
97
+ Fidel.sdkKey = expectedSdkKey;
98
+ sut.process(ReadableMapStub.withoutKey(FidelSetupProperties.SDK_KEY));
99
+ assertEquals(expectedSdkKey, Fidel.sdkKey);
100
+ }
101
+
102
+ @Test
103
+ public void test_WhenDataHasNoProgramIDKey_DoNotSetThisPropertyForFidel() {
104
+ String expectedProgramId = "some program id";
105
+ Fidel.programId = expectedProgramId;
106
+ sut.process(ReadableMapStub.withoutKey(FidelSetupProperties.PROGRAM_ID));
107
+ assertEquals(expectedProgramId, Fidel.programId);
108
+ }
109
+
110
+ @Test
111
+ public void test_WhenDataHasNoValueForSdkKey_DoNotSetThisPropertyForFidel() {
112
+ sut.process(ReadableMapStub.withNullValueForKey(FidelSetupProperties.SDK_KEY));
113
+ assertNull(Fidel.sdkKey);
114
+ }
115
+
116
+ @Test
117
+ public void test_WhenDataHasNoValueForProgramIDKey_DoNotSetThisPropertyForFidel() {
118
+ sut.process(ReadableMapStub.withNullValueForKey(FidelSetupProperties.PROGRAM_ID));
119
+ assertNull(Fidel.programId);
120
+ }
121
+
122
+ @Test
123
+ public void test_WhenDataHasEmptyValueForSdkKey_ShouldSetEmptyValueForThisPropertyForFidel() {
124
+ sut.process(ReadableMapStub.withEmptyValueForKey(FidelSetupProperties.SDK_KEY));
125
+ assertNotNull(Fidel.sdkKey);
126
+ assertTrue(Fidel.sdkKey.isEmpty());
127
+ }
128
+
129
+ @Test
130
+ public void test_WhenDataHasEmptyValueForProgramId_ShouldSetEmptyValueForThisPropertyForFidel() {
131
+ sut.process(ReadableMapStub.withEmptyValueForKey(FidelSetupProperties.PROGRAM_ID));
132
+ assertNotNull(Fidel.programId);
133
+ assertTrue(Fidel.programId.isEmpty());
134
+ }
135
+
136
+ @Test
137
+ public void test_WhenApiKeyIsSet_SetItToSDK() {
138
+ ReadableMapStub readableMap = ReadableMapStub.mapWithAllValidSetupKeys();
139
+ readableMap.putString(FidelSetupProperties.SDK_KEY.jsName(), TEST_SDK_KEY);
140
+ sut.process(readableMap);
141
+ assertEquals(TEST_SDK_KEY, Fidel.sdkKey);
142
+ }
143
+
144
+ @Test
145
+ public void test_WhenProgramIDIsSet_SetItToSDK() {
146
+ ReadableMapStub readableMap = ReadableMapStub.mapWithAllValidSetupKeys();
147
+ readableMap.putString(FidelSetupProperties.PROGRAM_ID.jsName(), TEST_PROGRAM_ID);
148
+ sut.process(readableMap);
149
+ assertEquals(TEST_PROGRAM_ID, Fidel.programId);
150
+ }
151
+
152
+ @Test
153
+ public void test_WhenDataHasNoOptionsKey_DoNotSetBannerImageForFidel() {
154
+ sut.process(ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS));
155
+ assertNull(Fidel.bannerImage);
156
+ }
157
+
158
+ @Test
159
+ public void test_WhenDataHasNoOptionsKey_DoNotTryToProcessBannerImageInformationWithTheImageAdapter() {
160
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
161
+ sut.process(map);
162
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
163
+ assertFalse(imageAdapterSpy.hasAskedToProcessData);
164
+ }
165
+
166
+ @Test
167
+ public void test_IfDoesNotHaveBannerImageKey_DoNotTryProcessingItWithTheImageAdapter() {
168
+ sut.process(ReadableMapStub.withoutOptionsKey(FidelSetupProperties.Options.BANNER_IMAGE));
169
+ assertFalse(imageAdapterSpy.hasAskedToProcessData);
170
+ assertNull(imageAdapterSpy.dataToProcess);
171
+ }
172
+
173
+ @Test
174
+ public void test_IfHasBannerImageKeyButNoImage_ShouldSendDataToImageAdapterAnyways() {
175
+ ReadableMapStub map = ReadableMapStub.withNullValueForOptionKey(FidelSetupProperties.Options.BANNER_IMAGE);
176
+ sut.process(map);
177
+ assertTrue(imageAdapterSpy.hasAskedToProcessData);
178
+ }
179
+
180
+ @Test
181
+ public void test_WhenReceivingBannerImageReadableMap_SendItToImageProcessor() {
182
+ ReadableMapStub readableMap = ReadableMapStub.mapWithAllValidSetupKeys();
183
+ sut.process(readableMap);
184
+ ReadableMapStub optionsMap = (ReadableMapStub) readableMap.getMap(FidelSetupProperties.OPTIONS.jsName());
185
+ assertNotNull(optionsMap);
186
+ assertEquals(optionsMap.mapsForKeysToReturn.get(FidelSetupProperties.Options.BANNER_IMAGE.jsName()),
187
+ imageAdapterSpy.dataToProcess);
188
+ }
189
+
190
+ @Test
191
+ public void test_WhenImageProcessorSendsBitmap_SetItForSDKBannerImage() {
192
+ Bitmap newBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.ALPHA_8);
193
+ sut.output(newBitmap);
194
+ assertEquals(Fidel.bannerImage, newBitmap);
195
+ }
196
+
197
+ @Test
198
+ public void test_WhenImageProcessorSendsNull_SetNullSDKBannerImage() {
199
+ Fidel.bannerImage = Bitmap.createBitmap(100, 200, Bitmap.Config.ALPHA_8);
200
+ sut.output(null);
201
+ assertNull(Fidel.bannerImage);
202
+ }
203
+
204
+ @Test
205
+ public void test_WhenDataHasNoOptionsKey_DoNotSetAllowedCountriesForFidel() {
206
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
207
+ Fidel.allowedCountries = TEST_COUNTRIES;
208
+ sut.process(map);
209
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
210
+ assertEquals(TEST_COUNTRIES, Fidel.allowedCountries);
211
+ }
212
+
213
+ @Test
214
+ public void test_WhenDataHasNoOptionsKey_DoNotTryToProcessCountriesWithTheCountryAdapter() {
215
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
216
+ sut.process(map);
217
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
218
+ assertFalse(countryAdapterStub.askedToParseAllowedCountries);
219
+ }
220
+
221
+ @Test
222
+ public void test_IfDoesNotHaveAllowedCountriesKey_DoNotSetAllowedCountriesForFidel() {
223
+ Fidel.allowedCountries = TEST_COUNTRIES;
224
+ countryAdapterStub.countriesToReturn = EnumSet.allOf(Country.class);
225
+ sut.process(ReadableMapStub.withoutOptionsKey(FidelSetupProperties.Options.ALLOWED_COUNTRIES));
226
+ assertEquals(TEST_COUNTRIES, Fidel.allowedCountries);
227
+ }
228
+
229
+ @Test
230
+ public void test_IfDoesHaveAllowedCountriesKey_ButNullValue_ShouldSetAdaptedCountriesForFidel() {
231
+ Fidel.allowedCountries = TEST_COUNTRIES;
232
+ countryAdapterStub.countriesToReturn = EnumSet.allOf(Country.class);
233
+ ReadableMapStub map = ReadableMapStub.withNullValueForOptionKey(FidelSetupProperties.Options.ALLOWED_COUNTRIES);
234
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
235
+ .get(FidelSetupProperties.OPTIONS.jsName());
236
+ assertNotNull(optionsMap);
237
+
238
+ sut.process(map);
239
+
240
+ assertTrue(optionsMap.keyNamesAskedValueFor.contains(FidelSetupProperties.Options.ALLOWED_COUNTRIES.jsName()));
241
+ assertEquals(EnumSet.allOf(Country.class), Fidel.allowedCountries);
242
+ }
243
+
244
+ @Test
245
+ public void test_WhenAllowedCountriesAreSet_ConvertThemWithCountryAdapterForTheSDK() {
246
+ countryAdapterStub.countriesToReturn = TEST_COUNTRIES;
247
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
248
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
249
+ .get(FidelSetupProperties.OPTIONS.jsName());
250
+ assertNotNull(optionsMap);
251
+
252
+ sut.process(map);
253
+
254
+ assertTrue(optionsMap.keyNamesAskedValueFor.contains(FidelSetupProperties.Options.ALLOWED_COUNTRIES.jsName()));
255
+ assertEquals(TEST_COUNTRIES, Fidel.allowedCountries);
256
+ }
257
+
258
+ @Test
259
+ public void test_WhenDataHasNoOptionsKey_DoNotSetDefaultSelectedCountryForFidel() {
260
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
261
+ Fidel.defaultSelectedCountry = Country.CANADA;
262
+ sut.process(map);
263
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
264
+ assertEquals(Country.CANADA, Fidel.defaultSelectedCountry);
265
+ }
266
+
267
+ @Test
268
+ public void test_WhenDataHasNoOptionsKey_DoNotTryToProcessCountryWithTheCountryAdapter() {
269
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
270
+ sut.process(map);
271
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
272
+ assertNull(countryAdapterStub.countryJSValueReceived);
273
+ }
274
+
275
+ @Test
276
+ public void test_IfDoesNotHaveDefaultSelectedCountryKey_DoNotSetDefaultSelectedCountryForFidel() {
277
+ Fidel.defaultSelectedCountry = Country.JAPAN;
278
+ countryAdapterStub.countriesToReturn = EnumSet.allOf(Country.class);
279
+ sut.process(ReadableMapStub.withoutOptionsKey(FidelSetupProperties.Options.DEFAULT_SELECTED_COUNTRY));
280
+ assertEquals(Country.JAPAN, Fidel.defaultSelectedCountry);
281
+ }
282
+
283
+ @Test
284
+ public void test_IfDoesHaveDefaultSelectedCountryKey_ButNullValue_ShouldSetAdaptedCountriesForFidel() {
285
+ Fidel.defaultSelectedCountry = Country.UNITED_STATES;
286
+ countryAdapterStub.countryForJSValueToReturn = Country.IRELAND;
287
+ ReadableMapStub map = ReadableMapStub
288
+ .withNullValueForOptionKey(FidelSetupProperties.Options.DEFAULT_SELECTED_COUNTRY);
289
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
290
+ .get(FidelSetupProperties.OPTIONS.jsName());
291
+ assertNotNull(optionsMap);
292
+
293
+ sut.process(map);
294
+
295
+ assertTrue(optionsMap.keyNamesAskedValueFor
296
+ .contains(FidelSetupProperties.Options.DEFAULT_SELECTED_COUNTRY.jsName()));
297
+ assertEquals(Country.IRELAND, Fidel.defaultSelectedCountry);
298
+ }
299
+
300
+ @Test
301
+ public void test_WhenDefaultSelectedCountryIsSet_ConvertItWithCountryAdapterForTheSDK() {
302
+ countryAdapterStub.countryForJSValueToReturn = Country.SWEDEN;
303
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
304
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
305
+ .get(FidelSetupProperties.OPTIONS.jsName());
306
+ assertNotNull(optionsMap);
307
+
308
+ sut.process(map);
309
+
310
+ assertTrue(optionsMap.keyNamesAskedValueFor
311
+ .contains(FidelSetupProperties.Options.DEFAULT_SELECTED_COUNTRY.jsName()));
312
+ assertEquals(Country.SWEDEN, Fidel.defaultSelectedCountry);
313
+ }
314
+
315
+ @Test
316
+ public void test_WhenDataHasNoOptionsKey_DoNotSetSupportedCardSchemesForFidel() {
317
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
318
+ Fidel.supportedCardSchemes = TEST_CARD_SCHEMES_SET;
319
+ sut.process(map);
320
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
321
+ assertEquals(TEST_CARD_SCHEMES_SET, Fidel.supportedCardSchemes);
322
+ }
323
+
324
+ @Test
325
+ public void test_WhenDataHasNoOptionsKey_DoNotTryToProcessCardSchemesWithTheCardSchemesAdapter() {
326
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
327
+ sut.process(map);
328
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
329
+ assertFalse(cardSchemesAdapterStub.askedToAdaptCardSchemes);
330
+ }
331
+
332
+ @Test
333
+ public void test_IfDoesNotHaveSupportedCardSchemesKey_DoNotSetSupportedCardSchemesForFidel() {
334
+ Fidel.supportedCardSchemes = TEST_CARD_SCHEMES_SET;
335
+ cardSchemesAdapterStub.fakeAdaptedCardSchemesToReturn = EnumSet.allOf(CardScheme.class);
336
+ sut.process(ReadableMapStub.withoutOptionsKey(FidelSetupProperties.Options.SUPPORTED_CARD_SCHEMES));
337
+ assertEquals(TEST_CARD_SCHEMES_SET, Fidel.supportedCardSchemes);
338
+ }
339
+
340
+ @Test
341
+ public void test_IfDoesHaveSupportedCardSchemesKey_ButNullValue_ShouldSetAdaptedCardSchemesForFidel() {
342
+ Fidel.supportedCardSchemes = TEST_CARD_SCHEMES_SET;
343
+ cardSchemesAdapterStub.fakeAdaptedCardSchemesToReturn = EnumSet.allOf(CardScheme.class);
344
+ ReadableMapStub map = ReadableMapStub
345
+ .withNullValueForOptionKey(FidelSetupProperties.Options.SUPPORTED_CARD_SCHEMES);
346
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
347
+ .get(FidelSetupProperties.OPTIONS.jsName());
348
+ assertNotNull(optionsMap);
349
+
350
+ sut.process(map);
351
+
352
+ assertTrue(optionsMap.keyNamesAskedValueFor
353
+ .contains(FidelSetupProperties.Options.SUPPORTED_CARD_SCHEMES.jsName()));
354
+ assertEquals(EnumSet.allOf(CardScheme.class), Fidel.supportedCardSchemes);
355
+ }
356
+
357
+ @Test
358
+ public void test_WhenCardSchemesAreSet_ConvertThemWithCardSchemesAdapterForTheSDK() {
359
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
360
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
361
+ .get(FidelSetupProperties.OPTIONS.jsName());
362
+ assertNotNull(optionsMap);
363
+ ReadableArrayStub readableCardSchemesArray = new ReadableArrayStub(1, new String[] { "visa" });
364
+ optionsMap.readableArraysToReturn.put(FidelSetupProperties.Options.SUPPORTED_CARD_SCHEMES.jsName(),
365
+ readableCardSchemesArray);
366
+ cardSchemesAdapterStub.fakeAdaptedCardSchemesToReturn = EnumSet.noneOf(CardScheme.class);
367
+
368
+ sut.process(map);
369
+
370
+ assertEquals(readableCardSchemesArray, cardSchemesAdapterStub.cardSchemesReceived);
371
+ }
372
+
373
+ @Test
374
+ public void test_WhenCardSchemesAreSet_SetThemForTheSDK() {
375
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
376
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
377
+ .get(FidelSetupProperties.OPTIONS.jsName());
378
+ assertNotNull(optionsMap);
379
+ ReadableArrayStub readableCardSchemesArray = new ReadableArrayStub(1, new String[] { "visa" });
380
+ optionsMap.readableArraysToReturn.put(FidelSetupProperties.Options.SUPPORTED_CARD_SCHEMES.jsName(),
381
+ readableCardSchemesArray);
382
+
383
+ cardSchemesAdapterStub.fakeAdaptedCardSchemesToReturn = TEST_CARD_SCHEMES_SET;
384
+
385
+ sut.process(map);
386
+
387
+ assertEquals(TEST_CARD_SCHEMES_SET, Fidel.supportedCardSchemes);
388
+ }
389
+
390
+ @Test
391
+ public void test_WhenDataHasNoOptionsKey_DoNotSetMetadataPropertyForFidel() throws JSONException {
392
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.OPTIONS);
393
+ JSONObject testMetaData = new JSONObject("{\"some_code\":123 }");
394
+ Fidel.metaData = testMetaData;
395
+ sut.process(map);
396
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
397
+ assertEquals(Fidel.metaData, testMetaData);
398
+ }
399
+
400
+ @Test
401
+ public void test_IfDoesNotHaveMetadataKey_DoNotSetThisPropertyForFidel() throws JSONException {
402
+ ReadableMapStub map = ReadableMapStub.withoutOptionsKey(FidelSetupProperties.Options.META_DATA);
403
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
404
+ .get(FidelSetupProperties.OPTIONS.jsName());
405
+ assertNotNull(optionsMap);
406
+
407
+ JSONObject testMetaData = new JSONObject("{\"some_code\":123 }");
408
+ Fidel.metaData = testMetaData;
409
+ sut.process(map);
410
+
411
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
412
+ assertTrue(optionsMap.keyNamesCheckedFor.contains(FidelSetupProperties.Options.META_DATA.jsName()));
413
+ assertFalse(optionsMap.keyNamesAskedValueFor.contains(FidelSetupProperties.Options.META_DATA.jsName()));
414
+ assertEquals(Fidel.metaData, testMetaData);
415
+ }
416
+
417
+ @Test
418
+ public void test_IfDoesHaveMetadataKey_ButWithNullValue_ShouldNullMetaDataValueForFidel() throws JSONException {
419
+ ReadableMapStub map = ReadableMapStub.withNullValueForOptionKey(FidelSetupProperties.Options.META_DATA);
420
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
421
+ .get(FidelSetupProperties.OPTIONS.jsName());
422
+ assertNotNull(optionsMap);
423
+
424
+ Fidel.metaData = new JSONObject("{\"some_code\":123 }");
425
+ sut.process(map);
426
+
427
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
428
+ assertTrue(optionsMap.keyNamesCheckedFor.contains(FidelSetupProperties.Options.META_DATA.jsName()));
429
+ assertTrue(optionsMap.keyNamesAskedValueFor.contains(FidelSetupProperties.Options.META_DATA.jsName()));
430
+ assertNull(Fidel.metaData);
431
+ }
432
+
433
+ @Test
434
+ public void test_WhenMetaDataValueIsSet_ConvertItToJSONForTheSDK() {
435
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
436
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
437
+ .get(FidelSetupProperties.OPTIONS.jsName());
438
+ assertNotNull(optionsMap);
439
+ optionsMap.mapsForKeysToReturn.put(FidelSetupProperties.Options.META_DATA.jsName(), TEST_META_DATA());
440
+
441
+ sut.process(map);
442
+
443
+ assertNotNull(Fidel.metaData);
444
+ assertMapEqualsWithJSONObject(TEST_HASH_MAP(), Fidel.metaData);
445
+ }
446
+
447
+ @Test
448
+ public void test_WhenDataHasNoConsentTextKey_DoNotSetCompanyNameForFidel() {
449
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.CONSENT_TEXT);
450
+ String fakeCompanyName = "some test, fake company name";
451
+ Fidel.companyName = fakeCompanyName;
452
+ sut.process(map);
453
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
454
+ assertEquals(fakeCompanyName, Fidel.companyName);
455
+ }
456
+
457
+ @Test
458
+ public void test_IfDoesNotHaveCompanyNameKey_DoNotSetThisPropertyForFidel() {
459
+ ReadableMapStub map = ReadableMapStub.withoutConsentTextKey(FidelSetupProperties.ConsentText.COMPANY_NAME);
460
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
461
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
462
+ assertNotNull(consentTextMap);
463
+
464
+ String fakeCompanyName = "some test, company name";
465
+ Fidel.companyName = fakeCompanyName;
466
+ sut.process(map);
467
+
468
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
469
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
470
+ assertFalse(
471
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
472
+ assertEquals(fakeCompanyName, Fidel.companyName);
473
+ }
474
+
475
+ @Test
476
+ public void test_IfDoesHaveCompanyNameKey_ButWithNullValue_ShouldSetNullCompanyNameForFidel() {
477
+ ReadableMapStub map = ReadableMapStub
478
+ .withNullValueForConsentTextKey(FidelSetupProperties.ConsentText.COMPANY_NAME);
479
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
480
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
481
+ assertNotNull(consentTextMap);
482
+
483
+ Fidel.companyName = "some test, fake company";
484
+ sut.process(map);
485
+
486
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
487
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
488
+ assertTrue(
489
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
490
+ assertNull(Fidel.companyName);
491
+ }
492
+
493
+ @Test
494
+ public void test_IfDoesHaveCompanyNameKeyAndValue_ShouldSetTheValueForFidel() {
495
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
496
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
497
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
498
+ assertNotNull(consentTextMap);
499
+ String expectedCompanyName = "some company name";
500
+ consentTextMap.stringForKeyToReturn.put(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName(),
501
+ expectedCompanyName);
502
+
503
+ Fidel.companyName = "previous fake company name";
504
+ sut.process(map);
505
+
506
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
507
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
508
+ assertTrue(
509
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.COMPANY_NAME.jsName()));
510
+ assertEquals(expectedCompanyName, Fidel.companyName);
511
+ }
512
+
513
+ @Test
514
+ public void test_WhenDataHasNoConsentTextKey_DoNotSetTermsAndConditionsUrlForFidel() {
515
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.CONSENT_TEXT);
516
+ String fakeTermsAndConditionsUrl = "some test, fake terms and conditions";
517
+ Fidel.termsAndConditionsUrl = fakeTermsAndConditionsUrl;
518
+ sut.process(map);
519
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
520
+ assertEquals(fakeTermsAndConditionsUrl, Fidel.termsAndConditionsUrl);
521
+ }
522
+
523
+ @Test
524
+ public void test_IfDoesNotHaveTermsAndConditionsUrlKey_DoNotSetThisPropertyForFidel() {
525
+ ReadableMapStub map = ReadableMapStub
526
+ .withoutConsentTextKey(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL);
527
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
528
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
529
+ assertNotNull(consentTextMap);
530
+
531
+ String fakeTermsAndConditionsUrl = "some test, fake terms and conditions";
532
+ Fidel.termsAndConditionsUrl = fakeTermsAndConditionsUrl;
533
+ sut.process(map);
534
+
535
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
536
+ assertTrue(consentTextMap.keyNamesCheckedFor
537
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
538
+ assertFalse(consentTextMap.keyNamesAskedValueFor
539
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
540
+ assertEquals(fakeTermsAndConditionsUrl, Fidel.termsAndConditionsUrl);
541
+ }
542
+
543
+ @Test
544
+ public void test_IfDoesHaveTermsAndConditionsUrlKey_ButWithNullValue_ShouldSetNullTermsAndConditionsUrlForFidel() {
545
+ ReadableMapStub map = ReadableMapStub
546
+ .withNullValueForConsentTextKey(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL);
547
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
548
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
549
+ assertNotNull(consentTextMap);
550
+
551
+ Fidel.termsAndConditionsUrl = "some test, fake terms and conditions";
552
+ sut.process(map);
553
+
554
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
555
+ assertTrue(consentTextMap.keyNamesCheckedFor
556
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
557
+ assertTrue(consentTextMap.keyNamesAskedValueFor
558
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
559
+ assertNull(Fidel.termsAndConditionsUrl);
560
+ }
561
+
562
+ @Test
563
+ public void test_IfDoesHaveTermsAndConditionsUrlKeyAndValue_ShouldSetTheValueForFidel() {
564
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
565
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
566
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
567
+ assertNotNull(consentTextMap);
568
+ String expectedTermsAndConditions = "some terms and conditions url";
569
+ consentTextMap.stringForKeyToReturn.put(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName(),
570
+ expectedTermsAndConditions);
571
+
572
+ Fidel.termsAndConditionsUrl = "previous fake terms and conditions url";
573
+ sut.process(map);
574
+
575
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
576
+ assertTrue(consentTextMap.keyNamesCheckedFor
577
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
578
+ assertTrue(consentTextMap.keyNamesAskedValueFor
579
+ .contains(FidelSetupProperties.ConsentText.TERMS_AND_CONDITIONS_URL.jsName()));
580
+ assertEquals(expectedTermsAndConditions, Fidel.termsAndConditionsUrl);
581
+ }
582
+
583
+ @Test
584
+ public void test_WhenDataHasNoConsentTextKey_DoNotSetPrivacyPolicyUrlForFidel() {
585
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.CONSENT_TEXT);
586
+ String fakePrivacyPolicyUrl = "some test, fake url";
587
+ Fidel.privacyPolicyUrl = fakePrivacyPolicyUrl;
588
+ sut.process(map);
589
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
590
+ assertEquals(fakePrivacyPolicyUrl, Fidel.privacyPolicyUrl);
591
+ }
592
+
593
+ @Test
594
+ public void test_IfDoesNotHavePrivacyPolicyUrlKey_DoNotSetThisPropertyForFidel() {
595
+ ReadableMapStub map = ReadableMapStub
596
+ .withoutConsentTextKey(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL);
597
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
598
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
599
+ assertNotNull(consentTextMap);
600
+
601
+ String fakePrivacyPolicyUrl = "some test, fake url";
602
+ Fidel.privacyPolicyUrl = fakePrivacyPolicyUrl;
603
+ sut.process(map);
604
+
605
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
606
+ assertTrue(consentTextMap.keyNamesCheckedFor
607
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
608
+ assertFalse(consentTextMap.keyNamesAskedValueFor
609
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
610
+ assertEquals(fakePrivacyPolicyUrl, Fidel.privacyPolicyUrl);
611
+ }
612
+
613
+ @Test
614
+ public void test_IfDoesHavePrivacyPolicyUrlKey_ButWithNullValue_ShouldSetNullPrivacyPolicyUrlForFidel() {
615
+ ReadableMapStub map = ReadableMapStub
616
+ .withNullValueForConsentTextKey(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL);
617
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
618
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
619
+ assertNotNull(consentTextMap);
620
+
621
+ Fidel.privacyPolicyUrl = "some test, fake url";
622
+ sut.process(map);
623
+
624
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
625
+ assertTrue(consentTextMap.keyNamesCheckedFor
626
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
627
+ assertTrue(consentTextMap.keyNamesAskedValueFor
628
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
629
+ assertNull(Fidel.privacyPolicyUrl);
630
+ }
631
+
632
+ @Test
633
+ public void test_IfDoesHavePrivacyPolicyUrlKeyAndValue_ShouldSetTheValueForFidel() {
634
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
635
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
636
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
637
+ assertNotNull(consentTextMap);
638
+ String expectedTermsAndConditions = "some test url";
639
+ consentTextMap.stringForKeyToReturn.put(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName(),
640
+ expectedTermsAndConditions);
641
+
642
+ Fidel.privacyPolicyUrl = "previous fake url";
643
+ sut.process(map);
644
+
645
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
646
+ assertTrue(consentTextMap.keyNamesCheckedFor
647
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
648
+ assertTrue(consentTextMap.keyNamesAskedValueFor
649
+ .contains(FidelSetupProperties.ConsentText.PRIVACY_POLICY_URL.jsName()));
650
+ assertEquals(expectedTermsAndConditions, Fidel.privacyPolicyUrl);
651
+ }
652
+
653
+ @Test
654
+ public void test_WhenDataHasNoConsentTextKey_DoNotSetProgramNameForFidel() {
655
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.CONSENT_TEXT);
656
+ String expectedValue = "some previously set value";
657
+ Fidel.programName = expectedValue;
658
+ sut.process(map);
659
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
660
+ assertEquals(expectedValue, Fidel.programName);
661
+ }
662
+
663
+ @Test
664
+ public void test_IfDoesNotHaveProgramNameKey_DoNotSetThisPropertyForFidel() {
665
+ ReadableMapStub map = ReadableMapStub.withoutConsentTextKey(FidelSetupProperties.ConsentText.PROGRAM_NAME);
666
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
667
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
668
+ assertNotNull(consentTextMap);
669
+
670
+ String expectedValue = "some previously set value";
671
+ Fidel.programName = expectedValue;
672
+ sut.process(map);
673
+
674
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
675
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
676
+ assertFalse(
677
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
678
+ assertEquals(expectedValue, Fidel.programName);
679
+ }
680
+
681
+ @Test
682
+ public void test_IfDoesHaveProgramNameKey_ButWithNullValue_ShouldSetNullProgramNameForFidel() {
683
+ ReadableMapStub map = ReadableMapStub
684
+ .withNullValueForConsentTextKey(FidelSetupProperties.ConsentText.PROGRAM_NAME);
685
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
686
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
687
+ assertNotNull(consentTextMap);
688
+
689
+ Fidel.programName = "some previously set value";
690
+ sut.process(map);
691
+
692
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
693
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
694
+ assertTrue(
695
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
696
+ assertNull(Fidel.programName);
697
+ }
698
+
699
+ @Test
700
+ public void test_IfDoesHaveProgramNameKeyAndValue_ShouldSetTheValueForFidel() {
701
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
702
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
703
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
704
+ assertNotNull(consentTextMap);
705
+ String expectedValue = "some program name";
706
+ consentTextMap.stringForKeyToReturn.put(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName(), expectedValue);
707
+
708
+ Fidel.programName = "some previously set value";
709
+ sut.process(map);
710
+
711
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
712
+ assertTrue(consentTextMap.keyNamesCheckedFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
713
+ assertTrue(
714
+ consentTextMap.keyNamesAskedValueFor.contains(FidelSetupProperties.ConsentText.PROGRAM_NAME.jsName()));
715
+ assertEquals(expectedValue, Fidel.programName);
716
+ }
717
+
718
+ @Test
719
+ public void test_WhenDataHasNoConsentTextKey_DoNotSetDeleteInstructionsForFidel() {
720
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.CONSENT_TEXT);
721
+ String expectedValue = "some previously set value";
722
+ Fidel.deleteInstructions = expectedValue;
723
+ sut.process(map);
724
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
725
+ assertEquals(expectedValue, Fidel.deleteInstructions);
726
+ }
727
+
728
+ @Test
729
+ public void test_IfDoesNotHaveDeleteInstructionsKey_DoNotSetThisPropertyForFidel() {
730
+ ReadableMapStub map = ReadableMapStub
731
+ .withoutConsentTextKey(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS);
732
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
733
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
734
+ assertNotNull(consentTextMap);
735
+
736
+ String expectedValue = "some previously set value";
737
+ Fidel.deleteInstructions = expectedValue;
738
+ sut.process(map);
739
+
740
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
741
+ assertTrue(consentTextMap.keyNamesCheckedFor
742
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
743
+ assertFalse(consentTextMap.keyNamesAskedValueFor
744
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
745
+ assertEquals(expectedValue, Fidel.deleteInstructions);
746
+ }
747
+
748
+ @Test
749
+ public void test_IfDoesHaveDeleteInstructionsKey_ButWithNullValue_ShouldSetNullDeleteInstructionsForFidel() {
750
+ ReadableMapStub map = ReadableMapStub
751
+ .withNullValueForConsentTextKey(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS);
752
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
753
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
754
+ assertNotNull(consentTextMap);
755
+
756
+ Fidel.deleteInstructions = "some previously set value";
757
+ sut.process(map);
758
+
759
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
760
+ assertTrue(consentTextMap.keyNamesCheckedFor
761
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
762
+ assertTrue(consentTextMap.keyNamesAskedValueFor
763
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
764
+ assertNull(Fidel.deleteInstructions);
765
+ }
766
+
767
+ @Test
768
+ public void test_IfDoesHaveDeleteInstructionsKeyAndValue_ShouldSetTheValueForFidel() {
769
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
770
+ ReadableMapStub consentTextMap = (ReadableMapStub) map.mapsForKeysToReturn
771
+ .get(FidelSetupProperties.CONSENT_TEXT.jsName());
772
+ assertNotNull(consentTextMap);
773
+ String expectedValue = "some delete instructions";
774
+ consentTextMap.stringForKeyToReturn.put(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName(),
775
+ expectedValue);
776
+
777
+ Fidel.deleteInstructions = "some previously set value";
778
+ sut.process(map);
779
+
780
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.CONSENT_TEXT.jsName()));
781
+ assertTrue(consentTextMap.keyNamesCheckedFor
782
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
783
+ assertTrue(consentTextMap.keyNamesAskedValueFor
784
+ .contains(FidelSetupProperties.ConsentText.DELETE_INSTRUCTIONS.jsName()));
785
+ assertEquals(expectedValue, Fidel.deleteInstructions);
786
+ }
787
+
788
+ @Test
789
+ public void test_IfDoesNotHaveProgramTypeKey_ShouldNotSetTheProgramTypeForFidel() {
790
+ ReadableMapStub map = ReadableMapStub.withoutKey(FidelSetupProperties.PROGRAM_TYPE);
791
+
792
+ Fidel.programType = ProgramType.TRANSACTION_STREAM;
793
+ programTypeAdapterStub.programTypeToReturn = ProgramType.TRANSACTION_SELECT;
794
+ sut.process(map);
795
+
796
+ assertTrue(map.keyNamesCheckedFor.contains(FidelSetupProperties.PROGRAM_TYPE.jsName()));
797
+ assertFalse(map.keyNamesAskedValueFor.contains(FidelSetupProperties.PROGRAM_TYPE.jsName()));
798
+ assertNull(programTypeAdapterStub.receivedProgramTypeString);
799
+ assertEquals(ProgramType.TRANSACTION_STREAM, Fidel.programType);
800
+ }
801
+
802
+ @Test
803
+ public void test_IfDoesHaveProgramTypeKey_ShouldSetTheValueProvidedByTheProgramTypeAdapter() {
804
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
805
+ String testProgramTypeValue = "program type value";
806
+ map.stringForKeyToReturn.put(FidelSetupProperties.PROGRAM_TYPE.jsName(), testProgramTypeValue);
807
+
808
+ Fidel.programType = ProgramType.TRANSACTION_SELECT;
809
+ programTypeAdapterStub.programTypeToReturn = ProgramType.TRANSACTION_STREAM;
810
+ sut.process(map);
811
+
812
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.PROGRAM_TYPE.jsName()));
813
+ assertEquals(testProgramTypeValue, programTypeAdapterStub.receivedProgramTypeString);
814
+ assertEquals(ProgramType.TRANSACTION_STREAM, Fidel.programType);
815
+ }
816
+
817
+ @Test
818
+ public void test_WhenThirdPartyVerificationChoiceIsTrue_ShouldBeSetToTrueForTheSDK() {
819
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
820
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
821
+ .get(FidelSetupProperties.OPTIONS.jsName());
822
+ assertNotNull(optionsMap);
823
+ optionsMap.boolToReturn = true;
824
+
825
+ sut.process(map);
826
+
827
+ assertTrue(Fidel.thirdPartyVerificationChoice);
828
+ }
829
+
830
+ @Test
831
+ public void test_ThirdPartyVerificationChoiceIsFalse_ShouldBeSetToFalseForTheSDK() {
832
+ ReadableMapStub map = ReadableMapStub.mapWithAllValidSetupKeys();
833
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
834
+ .get(FidelSetupProperties.OPTIONS.jsName());
835
+ assertNotNull(optionsMap);
836
+ optionsMap.boolToReturn = false;
837
+
838
+ sut.process(map);
839
+
840
+ assertFalse(Fidel.thirdPartyVerificationChoice);
841
+ }
842
+
843
+ @Test
844
+ public void test_IfDoesNotHaveThirdPartyVerificationChoiceKey_DoNotSetThisPropertyForFidel() {
845
+ ReadableMapStub map = ReadableMapStub
846
+ .withoutOptionsKey(FidelSetupProperties.Options.THIRD_PARTY_VERIFICATION_CHOICE);
847
+ ReadableMapStub optionsMap = (ReadableMapStub) map.mapsForKeysToReturn
848
+ .get(FidelSetupProperties.OPTIONS.jsName());
849
+ assertNotNull(optionsMap);
850
+
851
+ Fidel.thirdPartyVerificationChoice = true;
852
+ sut.process(map);
853
+
854
+ assertTrue(map.keyNamesAskedValueFor.contains(FidelSetupProperties.OPTIONS.jsName()));
855
+ assertTrue(optionsMap.keyNamesCheckedFor
856
+ .contains(FidelSetupProperties.Options.THIRD_PARTY_VERIFICATION_CHOICE.jsName()));
857
+ assertFalse(optionsMap.keyNamesAskedValueFor
858
+ .contains(FidelSetupProperties.Options.THIRD_PARTY_VERIFICATION_CHOICE.jsName()));
859
+ assertTrue(Fidel.thirdPartyVerificationChoice);
860
+ }
861
+
862
+ // Exposed constants tests
863
+
864
+ @Test
865
+ public void test_WhenAskedForConstants_IncludeConstantsFromCardSchemesAdapter() {
866
+ Map<String, Object> actualConstants = sut.getConstants();
867
+ Map<String, Object> expectedConstants = cardSchemesAdapterStub.getConstants();
868
+ assertMapContainsMap(actualConstants, expectedConstants);
869
+ }
870
+
871
+ @Test
872
+ public void test_WhenAskedForConstants_IncludeConstantsFromCountriesAdapter() {
873
+ Map<String, Object> actualConstants = sut.getConstants();
874
+ Map<String, Object> expectedConstants = countryAdapterStub.getConstants();
875
+ assertMapContainsMap(actualConstants, expectedConstants);
876
+ }
877
+
878
+ @Test
879
+ public void test_WhenAskedForConstants_IncludeConstantsFromProgramTypeAdapter() {
880
+ Map<String, Object> actualConstants = sut.getConstants();
881
+ Map<String, Object> expectedConstants = programTypeAdapterStub.getConstants();
882
+ assertMapContainsMap(actualConstants, expectedConstants);
883
+ }
884
+
885
+ // Helper functions
886
+
887
+ private static HashMap<String, Object> TEST_HASH_MAP() {
888
+ HashMap<String, Object> hashmapToReturn = new HashMap<>();
889
+ hashmapToReturn.put("stringKey", "StringVal");
890
+ hashmapToReturn.put("intKey", 3);
891
+ hashmapToReturn.put("doubleKey", 4.5);
892
+ return hashmapToReturn;
893
+ }
894
+
895
+ private static ReadableMapStub TEST_META_DATA() {
896
+ ReadableMapStub map = new ReadableMapStub();
897
+ map.hashMapToReturn = TEST_HASH_MAP();
898
+ return map;
899
+ }
900
+ }