@applicaster/zapp-react-native-utils 16.0.0-alpha.4416921324 → 16.0.0-alpha.4548770949

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 (173) hide show
  1. package/actionUtils/index.ts +3 -1
  2. package/actionsExecutor/ActionExecutor.ts +50 -3
  3. package/actionsExecutor/ActionExecutorContext.tsx +99 -17
  4. package/actionsExecutor/__tests__/ActionExecutor.test.ts +71 -0
  5. package/actionsExecutor/__tests__/StorageActions.test.ts +98 -0
  6. package/actionsExecutor/__tests__/feedDecorator.test.ts +91 -0
  7. package/actionsExecutor/__tests__/screenToggleFlag.test.ts +90 -0
  8. package/actionsExecutor/actions/__tests__/dismissBottomSheet.test.ts +25 -0
  9. package/actionsExecutor/actions/__tests__/goBack.test.ts +62 -0
  10. package/actionsExecutor/actions/__tests__/goHome.test.ts +19 -0
  11. package/actionsExecutor/actions/__tests__/loadItemsFromSource.test.ts +88 -0
  12. package/actionsExecutor/actions/__tests__/navigateToScreen.test.ts +267 -0
  13. package/actionsExecutor/actions/__tests__/openBottomSheet.customContent.test.ts +100 -0
  14. package/actionsExecutor/actions/__tests__/openBottomSheet.inlineItems.test.ts +372 -0
  15. package/actionsExecutor/actions/__tests__/presentScreen.test.ts +127 -0
  16. package/actionsExecutor/actions/__tests__/showAlert.test.ts +49 -0
  17. package/actionsExecutor/actions/__tests__/showToast.test.ts +88 -0
  18. package/actionsExecutor/actions/dismissBottomSheet.ts +23 -0
  19. package/actionsExecutor/actions/goBack.ts +60 -0
  20. package/actionsExecutor/actions/goHome.ts +31 -0
  21. package/actionsExecutor/actions/index.ts +12 -0
  22. package/actionsExecutor/actions/navigateToScreen.ts +43 -45
  23. package/actionsExecutor/actions/openBottomSheet.ts +340 -0
  24. package/actionsExecutor/actions/presentScreen.ts +78 -0
  25. package/actionsExecutor/actions/refreshComponent.ts +6 -0
  26. package/actionsExecutor/actions/screenToggleFlag.ts +1 -3
  27. package/actionsExecutor/actions/sendCloudEvent.ts +6 -1
  28. package/actionsExecutor/actions/showAlert.ts +51 -0
  29. package/actionsExecutor/actions/showToast.ts +64 -8
  30. package/actionsExecutor/consts.ts +27 -0
  31. package/actionsExecutor/feedDecorator.ts +12 -6
  32. package/analyticsUtils/PlayerAnalyticsManager.ts +1 -1
  33. package/appUtils/HooksManager/index.ts +9 -0
  34. package/appUtils/contextKeysManager/__tests__/getKey/failure.test.ts +1 -22
  35. package/appUtils/contextKeysManager/__tests__/getKey/success/fullSearch.test.ts +1 -25
  36. package/appUtils/contextKeysManager/__tests__/getKey/success/searchInSecure.test.ts +1 -7
  37. package/appUtils/contextKeysManager/__tests__/removeKey/failure.test.ts +0 -25
  38. package/appUtils/contextKeysManager/__tests__/removeKey/success.test.ts +0 -6
  39. package/appUtils/contextKeysManager/__tests__/setKey/failure/failedToSaveInStorage.test.ts +0 -40
  40. package/appUtils/contextKeysManager/__tests__/setKey/{success/saveItemAndReference.test.ts → success.test.ts} +2 -42
  41. package/appUtils/contextKeysManager/index.ts +28 -129
  42. package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +142 -59
  43. package/appUtils/playerManager/OverlayObserver/__tests__/getUpcomingQueue.test.ts +67 -0
  44. package/appUtils/playerManager/OverlayObserver/__tests__/liveContent.test.ts +205 -0
  45. package/appUtils/playerManager/OverlayObserver/__tests__/utils.test.ts +56 -0
  46. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.android.tv.ts +4 -0
  47. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ios.tv.ts +4 -0
  48. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ts +24 -0
  49. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.web.ts +4 -0
  50. package/appUtils/playerManager/OverlayObserver/utils.ts +51 -20
  51. package/appUtils/playerManager/__tests__/playerContent.test.ts +403 -0
  52. package/appUtils/playerManager/__tests__/playerDiagnostics.test.ts +62 -0
  53. package/appUtils/playerManager/__tests__/playerFactory.test.ts +1 -1
  54. package/appUtils/playerManager/__tests__/playerNative.test.ts +114 -0
  55. package/appUtils/playerManager/__tests__/playerNativeCommand.test.ts +62 -0
  56. package/appUtils/playerManager/__tests__/playerToolbox.test.ts +281 -0
  57. package/appUtils/playerManager/__tests__/usePlayerContent.test.tsx +64 -0
  58. package/appUtils/playerManager/__tests__/usePlayerControllerSetup.test.tsx +62 -0
  59. package/appUtils/playerManager/{conts.ts → const.ts} +33 -0
  60. package/appUtils/playerManager/index.ts +8 -1
  61. package/appUtils/playerManager/player.ts +140 -3
  62. package/appUtils/playerManager/playerFactory.ts +1 -1
  63. package/appUtils/playerManager/playerNative.ts +28 -4
  64. package/appUtils/playerManager/playerNativeCommand.ts +3 -6
  65. package/appUtils/playerManager/playerToolbox.ts +196 -0
  66. package/appUtils/playerManager/usePlayerContent.tsx +43 -0
  67. package/appUtils/playerManager/usePlayerControllerSetup.tsx +7 -1
  68. package/appUtils/playerManager/userLanguagePreference.ts +1 -1
  69. package/arrayUtils/__tests__/reorderByIds.test.ts +63 -0
  70. package/arrayUtils/index.ts +62 -0
  71. package/cellUtils/__tests__/getButtonsEnabled.test.ts +28 -0
  72. package/cellUtils/__tests__/getCellNavigationEnabled.test.ts +36 -0
  73. package/cellUtils/__tests__/getIsCellNavigationEnabled.test.ts +35 -0
  74. package/cellUtils/__tests__/isCellNavigationEnabled.test.ts +21 -0
  75. package/cellUtils/index.ts +70 -3
  76. package/configurationUtils/__tests__/manifestKeyParser.test.ts +21 -0
  77. package/configurationUtils/__tests__/modalBlocksParser.test.ts +403 -0
  78. package/configurationUtils/manifestKeyParser.ts +50 -10
  79. package/configurationUtils/modalBlocksParser.ts +252 -0
  80. package/entryActions/__tests__/buildEntryActions.test.ts +235 -0
  81. package/entryActions/aliasPresentation.ts +108 -0
  82. package/entryActions/buildEntryActions.ts +167 -0
  83. package/entryActions/index.ts +15 -0
  84. package/entryActions/types.ts +39 -0
  85. package/focusManager/FocusManager.ts +26 -0
  86. package/focusManager/__tests__/FocusManager.test.ts +9 -0
  87. package/localizationUtils/index.ts +12 -6
  88. package/logger/__tests__/xrayToolbox.test.ts +69 -0
  89. package/logger/xrayToolbox.ts +67 -0
  90. package/manifestUtils/__tests__/player.audioControls.test.js +158 -0
  91. package/manifestUtils/_internals/index.js +8 -3
  92. package/manifestUtils/defaultManifestConfigurations/generalContent.js +6 -0
  93. package/manifestUtils/defaultManifestConfigurations/player.js +338 -1
  94. package/manifestUtils/index.js +3 -0
  95. package/manifestUtils/keys.js +7 -2
  96. package/manifestUtils/mobileAction/container/__tests__/mobileActionButtonsContainer.test.js +21 -0
  97. package/manifestUtils/mobileAction/groups/__tests__/buildMobileActionButtonGroups.test.js +1 -1
  98. package/manifestUtils/mobileAction/groups/defaults.js +2 -1
  99. package/manifestUtils/modalBlocks.js +304 -0
  100. package/modalState/ContentViewModel.ts +113 -0
  101. package/modalState/EditableCollection.ts +17 -0
  102. package/modalState/EditableCollectionRegistry.ts +51 -0
  103. package/modalState/ModalOrchestrator.ts +213 -0
  104. package/modalState/RemoteEditableCollection.ts +235 -0
  105. package/modalState/__tests__/ContentViewModel.editable.test.ts +69 -0
  106. package/modalState/__tests__/ContentViewModel.test.ts +165 -0
  107. package/modalState/__tests__/EditableCollectionRegistry.test.ts +112 -0
  108. package/modalState/__tests__/ModalOrchestrator.phase3.test.ts +86 -0
  109. package/modalState/__tests__/RemoteEditableCollection.test.ts +415 -0
  110. package/modalState/__tests__/index.test.ts +30 -1
  111. package/modalState/__tests__/useBottomSheetContent.test.ts +349 -0
  112. package/modalState/__tests__/useModalStoreState.test.ts +142 -0
  113. package/modalState/index.ts +37 -83
  114. package/modalState/store.ts +109 -0
  115. package/modalState/types.ts +173 -0
  116. package/modalState/useBottomSheetContent.ts +109 -0
  117. package/navigationUtils/xrayNavigator.ts +12 -0
  118. package/package.json +3 -2
  119. package/playerUtils/__tests__/contentDataKeys.test.ts +297 -0
  120. package/playerUtils/__tests__/resolvePlayerActions.test.ts +138 -0
  121. package/playerUtils/__tests__/resolvePlayerTitleSubtitle.test.ts +180 -0
  122. package/playerUtils/contentDataKeys.ts +134 -0
  123. package/playerUtils/index.ts +37 -16
  124. package/playerUtils/isAudioItem.ts +26 -0
  125. package/playerUtils/resolvePlayerActions.ts +71 -0
  126. package/playerUtils/resolvePlayerTitleSubtitle.ts +76 -0
  127. package/pluginUtils/__tests__/pluginUtils.test.js +32 -0
  128. package/pluginUtils/index.ts +29 -0
  129. package/quickBrickAssets/__tests__/index.test.ts +18 -0
  130. package/quickBrickAssets/index.ts +35 -0
  131. package/reactHooks/__tests__/getPluginConfiguration.test.ts +82 -0
  132. package/reactHooks/actions/index.ts +74 -3
  133. package/reactHooks/cell-click/__tests__/index.test.js +64 -0
  134. package/reactHooks/cell-click/index.ts +21 -14
  135. package/reactHooks/connection/index.tsx +8 -5
  136. package/reactHooks/feed/__tests__/feedInvalidation.test.tsx +338 -0
  137. package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +8 -2
  138. package/reactHooks/feed/__tests__/useMarkPipesDataStale.test.tsx +243 -0
  139. package/reactHooks/feed/useFeedLoader.tsx +28 -1
  140. package/reactHooks/feed/useLoadPipesDataDispatch.ts +12 -11
  141. package/reactHooks/feed/useMarkPipesDataStale.ts +68 -23
  142. package/reactHooks/index.ts +2 -0
  143. package/reactHooks/layout/index.ts +1 -1
  144. package/reactHooks/navigation/__tests__/index.test.tsx +176 -1
  145. package/reactHooks/navigation/__tests__/usePresentScreen.test.ts +154 -0
  146. package/reactHooks/navigation/index.ts +2 -0
  147. package/reactHooks/navigation/usePresentScreen.ts +157 -0
  148. package/reactHooks/navigation/useRoute.ts +22 -5
  149. package/reactHooks/usePluginConfiguration.ts +88 -47
  150. package/reactHooks/utils/__tests__/index.test.js +22 -2
  151. package/reactHooks/utils/index.ts +11 -1
  152. package/riverComponetsMeasurementProvider/index.tsx +3 -1
  153. package/uiActionsRegistrator/__tests__/resolveActionIdentifiers.test.ts +93 -0
  154. package/uiActionsRegistrator/__tests__/subscribe.test.ts +133 -0
  155. package/uiActionsRegistrator/__tests__/usableActionItems.test.ts +52 -0
  156. package/uiActionsRegistrator/index.ts +25 -203
  157. package/uiActionsRegistrator/registry.ts +351 -0
  158. package/uiActionsRegistrator/resolveActionIdentifiers.ts +100 -0
  159. package/uiActionsRegistrator/usableActionItems.ts +66 -0
  160. package/zappFrameworkUtils/__tests__/localStorageHelper.test.ts +146 -0
  161. package/zappFrameworkUtils/localStorageHelper.ts +19 -15
  162. package/appUtils/contextKeysManager/__tests__/getKey/success/byReference.test.ts +0 -56
  163. package/appUtils/contextKeysManager/__tests__/getKeyByReference/failure.test.ts +0 -265
  164. package/appUtils/contextKeysManager/__tests__/getKeyByReference/success.test.ts +0 -303
  165. package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/failure.test.ts +0 -82
  166. package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/success.test.ts +0 -41
  167. package/appUtils/contextKeysManager/__tests__/setKey/success/saveItemButNotReference.test.ts +0 -208
  168. package/appUtils/contextKeysManager/__tests__/setReferenceForKey/failure.test.ts +0 -93
  169. package/appUtils/contextKeysManager/__tests__/setReferenceForKey/success.test.ts +0 -45
  170. package/appUtils/playerManager/usePlayerTitleSummaryOverlay.tsx +0 -56
  171. package/playerUtils/__tests__/getPlayerActionButtons.test.ts +0 -54
  172. package/playerUtils/getPlayerActionButtons.ts +0 -17
  173. /package/reactHooks/actions/__tests__/{index.test.js → index.test.tsx} +0 -0
@@ -2,10 +2,10 @@ import { localStorage } from "@applicaster/zapp-react-native-bridge/ZappStorage/
2
2
  import { isNilOrEmpty } from "../reactUtils/helpers";
3
3
  import { parseJsonIfNeeded } from "@applicaster/zapp-react-native-utils/functionUtils";
4
4
  import {
5
- StorageOwnedValues,
6
5
  NamespaceValues,
7
- StorageValuesToRemove,
6
+ StorageOwnedValues,
8
7
  StorageValuesToAdd,
8
+ StorageValuesToRemove,
9
9
  } from "./types";
10
10
  import { Storage } from "@applicaster/zapp-react-native-bridge/ZappStorage/Storage";
11
11
 
@@ -43,10 +43,10 @@ function mapOwnedKeysToAdd(
43
43
  ): StorageOwnedValues {
44
44
  const mappedData = {};
45
45
 
46
- Object.keys(storageValues).forEach((namespace: string) => {
46
+ for (const namespace of Object.keys(storageValues)) {
47
47
  const data = storageValues[namespace];
48
48
  mappedData[namespace] = Object.keys(data);
49
- });
49
+ }
50
50
 
51
51
  return mappedData;
52
52
  }
@@ -59,6 +59,8 @@ export async function batchSave(
59
59
  return false;
60
60
  }
61
61
 
62
+ const promises = [];
63
+
62
64
  for (const namespace of Object.keys(storageValues)) {
63
65
  const namespaceData = storageValues[namespace];
64
66
 
@@ -66,10 +68,12 @@ export async function batchSave(
66
68
  const value = namespaceData[key];
67
69
 
68
70
  if (!isNilOrEmpty(value)) {
69
- await storage.setItem(key, value, namespace);
71
+ promises.push(storage.setItem(key, value, namespace));
70
72
  }
71
73
  }
72
74
  }
75
+
76
+ await Promise.all(promises);
73
77
  }
74
78
 
75
79
  export async function batchSaveToLocalStorage(
@@ -82,13 +86,17 @@ export async function batchRemoveFromStorage(
82
86
  storageValues: StorageValuesToRemove,
83
87
  storage: Storage = localStorage
84
88
  ) {
89
+ const promises = [];
90
+
85
91
  for (const namespace of Object.keys(storageValues)) {
86
92
  const namespaceData = storageValues[namespace];
87
93
 
88
94
  for (const key of namespaceData) {
89
- await storage.removeItem(key, namespace);
95
+ promises.push(storage.removeItem(key, namespace));
90
96
  }
91
97
  }
98
+
99
+ await Promise.all(promises);
92
100
  }
93
101
 
94
102
  export async function batchRemoveFromLocalStorage(
@@ -111,12 +119,12 @@ async function addOwnedKeys({
111
119
  ownershipNamespace
112
120
  );
113
121
 
114
- Object.keys(newKeys).forEach(async (namespace: string) => {
122
+ for (const namespace of Object.keys(newKeys)) {
115
123
  const newOwnedKeys: string[] = newKeys[namespace];
116
124
  const currentKeys = allStoragedOwnedKeys[namespace] || [];
117
125
  const combinedSet = new Set([...currentKeys, ...newOwnedKeys]);
118
126
  allStoragedOwnedKeys[namespace] = Array.from(combinedSet);
119
- });
127
+ }
120
128
 
121
129
  const data = JSON.stringify(allStoragedOwnedKeys);
122
130
  await localStorage.setItem(ownershipKey, data, ownershipNamespace);
@@ -136,18 +144,14 @@ async function removeOwnedKeys({
136
144
  ownershipNamespace
137
145
  );
138
146
 
139
- Object.keys(toRemoveKeys).forEach(async (namespace: string) => {
147
+ for (const namespace of Object.keys(toRemoveKeys)) {
140
148
  const keysToRemove: string[] = toRemoveKeys[namespace] || [];
141
149
  const currentKeys: string[] = currentKeysList[namespace] || [];
142
150
 
143
151
  const storageOwnedSet = new Set(currentKeys);
144
152
  const keysToRemoveSet = new Set(keysToRemove);
145
153
 
146
- function removeAll(originalSet, toBeRemovedSet) {
147
- toBeRemovedSet.forEach(Set.prototype.delete, originalSet);
148
- }
149
-
150
- removeAll(storageOwnedSet, keysToRemoveSet);
154
+ keysToRemoveSet.forEach((key) => storageOwnedSet.delete(key));
151
155
  const newLoginKeys = Array.from(storageOwnedSet);
152
156
 
153
157
  if (isNilOrEmpty(newLoginKeys)) {
@@ -155,7 +159,7 @@ async function removeOwnedKeys({
155
159
  } else {
156
160
  currentKeysList[namespace] = newLoginKeys;
157
161
  }
158
- });
162
+ }
159
163
 
160
164
  if (isNilOrEmpty(currentKeysList)) {
161
165
  await localStorage.removeItem(ownershipKey, ownershipNamespace);
@@ -1,56 +0,0 @@
1
- import { ContextKeysManager } from "../../..";
2
-
3
- describe("Context Keys Manager - getKey", () => {
4
- it("returns value if found by reference", async () => {
5
- // setup
6
- const key = "namespace.key";
7
- const value = "value";
8
-
9
- const mockedLogger = {
10
- warn: jest.fn(),
11
- };
12
-
13
- const mockedSessionStorage = {
14
- getItem: jest.fn(),
15
- setItem: jest.fn(),
16
- removeItem: jest.fn(),
17
- };
18
-
19
- const mockedLocalStorage = {
20
- getItem: jest.fn(),
21
- setItem: jest.fn(),
22
- removeItem: jest.fn(),
23
- };
24
-
25
- const mockedSecureStorage = {
26
- getItem: jest.fn(),
27
- setItem: jest.fn(),
28
- removeItem: jest.fn(),
29
- };
30
-
31
- const contextManager = new ContextKeysManager({
32
- logger: mockedLogger,
33
- sessionStorage: mockedSessionStorage,
34
- localStorage: mockedLocalStorage,
35
- secureStorage: mockedSecureStorage,
36
- });
37
-
38
- const getKeyByReference = jest
39
- .spyOn(contextManager, "getKeyByReference")
40
- .mockResolvedValueOnce(value);
41
-
42
- // run
43
- const result = await contextManager.getKey(key);
44
-
45
- // verify
46
- expect(result).toEqual(value);
47
-
48
- expect(mockedLogger.warn).not.toHaveBeenCalled();
49
-
50
- expect(getKeyByReference).toHaveBeenCalledWith("key", "namespace");
51
-
52
- expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
53
- expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
54
- expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
55
- });
56
- });
@@ -1,265 +0,0 @@
1
- import { ContextKeysManager, REFERENCE_NAMESPACE, NOTHING } from "../..";
2
- import { buildNamespaceKey } from "../../utils";
3
- import { StorageType } from "../../consts";
4
-
5
- describe("Context Keys Manager - getKeyByReference", () => {
6
- it("returns null if reference-storage failed", async () => {
7
- // setup
8
- const key = "key";
9
- const namespace = "namespace";
10
- const error = Error("oops");
11
-
12
- const mockedLogger = {
13
- warn: jest.fn(),
14
- };
15
-
16
- const mockedSessionStorage = {
17
- getItem: jest.fn(),
18
- setItem: jest.fn(),
19
- removeItem: jest.fn(),
20
- };
21
-
22
- const mockedLocalStorage = {
23
- getItem: jest.fn(),
24
- setItem: jest.fn(),
25
- removeItem: jest.fn(),
26
- };
27
-
28
- const mockedSecureStorage = {
29
- getItem: jest.fn(),
30
- setItem: jest.fn(),
31
- removeItem: jest.fn(),
32
- };
33
-
34
- const mockedReferenceStorage = {
35
- getItem: jest.fn().mockRejectedValueOnce(error),
36
- setItem: jest.fn(),
37
- removeItem: jest.fn(),
38
- };
39
-
40
- const contextManager = new ContextKeysManager({
41
- logger: mockedLogger,
42
- sessionStorage: mockedSessionStorage,
43
- localStorage: mockedLocalStorage,
44
- secureStorage: mockedSecureStorage,
45
- referenceStorage: mockedReferenceStorage,
46
- });
47
-
48
- // run
49
- const result = await contextManager.getKeyByReference(key, namespace);
50
-
51
- // verify
52
- expect(result).toEqual(NOTHING);
53
-
54
- expect(mockedLogger.warn).toHaveBeenCalledTimes(1);
55
-
56
- expect(mockedLogger.warn).toHaveBeenCalledWith({
57
- message: error.message,
58
- data: { key, namespace },
59
- });
60
-
61
- expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
62
- expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
63
- expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
64
-
65
- expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith(
66
- buildNamespaceKey(key, namespace),
67
- REFERENCE_NAMESPACE
68
- );
69
- });
70
-
71
- it("returns null if from session-storage failed", async () => {
72
- // setup
73
- const key = "key";
74
- const namespace = "namespace";
75
- const error = Error("oops");
76
-
77
- const mockedLogger = {
78
- warn: jest.fn(),
79
- };
80
-
81
- const mockedSessionStorage = {
82
- getItem: jest.fn().mockRejectedValueOnce(error),
83
- setItem: jest.fn(),
84
- removeItem: jest.fn(),
85
- };
86
-
87
- const mockedLocalStorage = {
88
- getItem: jest.fn(),
89
- setItem: jest.fn(),
90
- removeItem: jest.fn(),
91
- };
92
-
93
- const mockedSecureStorage = {
94
- getItem: jest.fn(),
95
- setItem: jest.fn(),
96
- removeItem: jest.fn(),
97
- };
98
-
99
- const mockedReferenceStorage = {
100
- getItem: jest.fn().mockResolvedValueOnce(StorageType.session),
101
- setItem: jest.fn(),
102
- removeItem: jest.fn(),
103
- };
104
-
105
- const contextManager = new ContextKeysManager({
106
- logger: mockedLogger,
107
- sessionStorage: mockedSessionStorage,
108
- localStorage: mockedLocalStorage,
109
- secureStorage: mockedSecureStorage,
110
- referenceStorage: mockedReferenceStorage,
111
- });
112
-
113
- // run
114
- const result = await contextManager.getKeyByReference(key, namespace);
115
-
116
- // verify
117
- expect(result).toEqual(NOTHING);
118
-
119
- expect(mockedLogger.warn).toHaveBeenCalledTimes(1);
120
-
121
- expect(mockedLogger.warn).toHaveBeenCalledWith({
122
- message: error.message,
123
- data: { key, namespace },
124
- });
125
-
126
- expect(mockedSessionStorage.getItem).toHaveBeenCalledWith(key, namespace);
127
- expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
128
- expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
129
-
130
- expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith(
131
- buildNamespaceKey(key, namespace),
132
- REFERENCE_NAMESPACE
133
- );
134
- });
135
-
136
- it("returns null if from local-storage failed", async () => {
137
- // setup
138
- const key = "key";
139
- const namespace = "namespace";
140
- const error = Error("oops");
141
-
142
- const mockedLogger = {
143
- warn: jest.fn(),
144
- };
145
-
146
- const mockedSessionStorage = {
147
- getItem: jest.fn(),
148
- setItem: jest.fn(),
149
- removeItem: jest.fn(),
150
- };
151
-
152
- const mockedLocalStorage = {
153
- getItem: jest.fn().mockRejectedValueOnce(error),
154
- setItem: jest.fn(),
155
- removeItem: jest.fn(),
156
- };
157
-
158
- const mockedSecureStorage = {
159
- getItem: jest.fn(),
160
- setItem: jest.fn(),
161
- removeItem: jest.fn(),
162
- };
163
-
164
- const mockedReferenceStorage = {
165
- getItem: jest.fn().mockResolvedValueOnce(StorageType.local),
166
- setItem: jest.fn(),
167
- removeItem: jest.fn(),
168
- };
169
-
170
- const contextManager = new ContextKeysManager({
171
- logger: mockedLogger,
172
- sessionStorage: mockedSessionStorage,
173
- localStorage: mockedLocalStorage,
174
- secureStorage: mockedSecureStorage,
175
- referenceStorage: mockedReferenceStorage,
176
- });
177
-
178
- // run
179
- const result = await contextManager.getKeyByReference(key, namespace);
180
-
181
- // verify
182
- expect(result).toEqual(NOTHING);
183
-
184
- expect(mockedLogger.warn).toHaveBeenCalledTimes(1);
185
-
186
- expect(mockedLogger.warn).toHaveBeenCalledWith({
187
- message: error.message,
188
- data: { key, namespace },
189
- });
190
-
191
- expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
192
- expect(mockedLocalStorage.getItem).toHaveBeenCalledWith(key, namespace);
193
- expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
194
-
195
- expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith(
196
- buildNamespaceKey(key, namespace),
197
- REFERENCE_NAMESPACE
198
- );
199
- });
200
-
201
- it("returns null if from secure-storage failed", async () => {
202
- // setup
203
- const key = "key";
204
- const namespace = "namespace";
205
- const error = Error("oops");
206
-
207
- const mockedLogger = {
208
- warn: jest.fn(),
209
- };
210
-
211
- const mockedSessionStorage = {
212
- getItem: jest.fn(),
213
- setItem: jest.fn(),
214
- removeItem: jest.fn(),
215
- };
216
-
217
- const mockedLocalStorage = {
218
- getItem: jest.fn(),
219
- setItem: jest.fn(),
220
- removeItem: jest.fn(),
221
- };
222
-
223
- const mockedSecureStorage = {
224
- getItem: jest.fn().mockRejectedValueOnce(error),
225
- setItem: jest.fn(),
226
- removeItem: jest.fn(),
227
- };
228
-
229
- const mockedReferenceStorage = {
230
- getItem: jest.fn().mockResolvedValueOnce(StorageType.secure),
231
- setItem: jest.fn(),
232
- removeItem: jest.fn(),
233
- };
234
-
235
- const contextManager = new ContextKeysManager({
236
- logger: mockedLogger,
237
- sessionStorage: mockedSessionStorage,
238
- localStorage: mockedLocalStorage,
239
- secureStorage: mockedSecureStorage,
240
- referenceStorage: mockedReferenceStorage,
241
- });
242
-
243
- // run
244
- const result = await contextManager.getKeyByReference(key, namespace);
245
-
246
- // verify
247
- expect(result).toEqual(NOTHING);
248
-
249
- expect(mockedLogger.warn).toHaveBeenCalledTimes(1);
250
-
251
- expect(mockedLogger.warn).toHaveBeenCalledWith({
252
- message: error.message,
253
- data: { key, namespace },
254
- });
255
-
256
- expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
257
- expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
258
- expect(mockedSecureStorage.getItem).toHaveBeenCalledWith(key, namespace);
259
-
260
- expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith(
261
- buildNamespaceKey(key, namespace),
262
- REFERENCE_NAMESPACE
263
- );
264
- });
265
- });