@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.
- package/actionUtils/index.ts +3 -1
- package/actionsExecutor/ActionExecutor.ts +50 -3
- package/actionsExecutor/ActionExecutorContext.tsx +99 -17
- package/actionsExecutor/__tests__/ActionExecutor.test.ts +71 -0
- package/actionsExecutor/__tests__/StorageActions.test.ts +98 -0
- package/actionsExecutor/__tests__/feedDecorator.test.ts +91 -0
- package/actionsExecutor/__tests__/screenToggleFlag.test.ts +90 -0
- package/actionsExecutor/actions/__tests__/dismissBottomSheet.test.ts +25 -0
- package/actionsExecutor/actions/__tests__/goBack.test.ts +62 -0
- package/actionsExecutor/actions/__tests__/goHome.test.ts +19 -0
- package/actionsExecutor/actions/__tests__/loadItemsFromSource.test.ts +88 -0
- package/actionsExecutor/actions/__tests__/navigateToScreen.test.ts +267 -0
- package/actionsExecutor/actions/__tests__/openBottomSheet.customContent.test.ts +100 -0
- package/actionsExecutor/actions/__tests__/openBottomSheet.inlineItems.test.ts +372 -0
- package/actionsExecutor/actions/__tests__/presentScreen.test.ts +127 -0
- package/actionsExecutor/actions/__tests__/showAlert.test.ts +49 -0
- package/actionsExecutor/actions/__tests__/showToast.test.ts +88 -0
- package/actionsExecutor/actions/dismissBottomSheet.ts +23 -0
- package/actionsExecutor/actions/goBack.ts +60 -0
- package/actionsExecutor/actions/goHome.ts +31 -0
- package/actionsExecutor/actions/index.ts +12 -0
- package/actionsExecutor/actions/navigateToScreen.ts +43 -45
- package/actionsExecutor/actions/openBottomSheet.ts +340 -0
- package/actionsExecutor/actions/presentScreen.ts +78 -0
- package/actionsExecutor/actions/refreshComponent.ts +6 -0
- package/actionsExecutor/actions/screenToggleFlag.ts +1 -3
- package/actionsExecutor/actions/sendCloudEvent.ts +6 -1
- package/actionsExecutor/actions/showAlert.ts +51 -0
- package/actionsExecutor/actions/showToast.ts +64 -8
- package/actionsExecutor/consts.ts +27 -0
- package/actionsExecutor/feedDecorator.ts +12 -6
- package/analyticsUtils/PlayerAnalyticsManager.ts +1 -1
- package/appUtils/HooksManager/index.ts +9 -0
- package/appUtils/contextKeysManager/__tests__/getKey/failure.test.ts +1 -22
- package/appUtils/contextKeysManager/__tests__/getKey/success/fullSearch.test.ts +1 -25
- package/appUtils/contextKeysManager/__tests__/getKey/success/searchInSecure.test.ts +1 -7
- package/appUtils/contextKeysManager/__tests__/removeKey/failure.test.ts +0 -25
- package/appUtils/contextKeysManager/__tests__/removeKey/success.test.ts +0 -6
- package/appUtils/contextKeysManager/__tests__/setKey/failure/failedToSaveInStorage.test.ts +0 -40
- package/appUtils/contextKeysManager/__tests__/setKey/{success/saveItemAndReference.test.ts → success.test.ts} +2 -42
- package/appUtils/contextKeysManager/index.ts +28 -129
- package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +142 -59
- package/appUtils/playerManager/OverlayObserver/__tests__/getUpcomingQueue.test.ts +67 -0
- package/appUtils/playerManager/OverlayObserver/__tests__/liveContent.test.ts +205 -0
- package/appUtils/playerManager/OverlayObserver/__tests__/utils.test.ts +56 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.android.tv.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ios.tv.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ts +24 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.web.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/utils.ts +51 -20
- package/appUtils/playerManager/__tests__/playerContent.test.ts +403 -0
- package/appUtils/playerManager/__tests__/playerDiagnostics.test.ts +62 -0
- package/appUtils/playerManager/__tests__/playerFactory.test.ts +1 -1
- package/appUtils/playerManager/__tests__/playerNative.test.ts +114 -0
- package/appUtils/playerManager/__tests__/playerNativeCommand.test.ts +62 -0
- package/appUtils/playerManager/__tests__/playerToolbox.test.ts +281 -0
- package/appUtils/playerManager/__tests__/usePlayerContent.test.tsx +64 -0
- package/appUtils/playerManager/__tests__/usePlayerControllerSetup.test.tsx +62 -0
- package/appUtils/playerManager/{conts.ts → const.ts} +33 -0
- package/appUtils/playerManager/index.ts +8 -1
- package/appUtils/playerManager/player.ts +140 -3
- package/appUtils/playerManager/playerFactory.ts +1 -1
- package/appUtils/playerManager/playerNative.ts +28 -4
- package/appUtils/playerManager/playerNativeCommand.ts +3 -6
- package/appUtils/playerManager/playerToolbox.ts +196 -0
- package/appUtils/playerManager/usePlayerContent.tsx +43 -0
- package/appUtils/playerManager/usePlayerControllerSetup.tsx +7 -1
- package/appUtils/playerManager/userLanguagePreference.ts +1 -1
- package/arrayUtils/__tests__/reorderByIds.test.ts +63 -0
- package/arrayUtils/index.ts +62 -0
- package/cellUtils/__tests__/getButtonsEnabled.test.ts +28 -0
- package/cellUtils/__tests__/getCellNavigationEnabled.test.ts +36 -0
- package/cellUtils/__tests__/getIsCellNavigationEnabled.test.ts +35 -0
- package/cellUtils/__tests__/isCellNavigationEnabled.test.ts +21 -0
- package/cellUtils/index.ts +70 -3
- package/configurationUtils/__tests__/manifestKeyParser.test.ts +21 -0
- package/configurationUtils/__tests__/modalBlocksParser.test.ts +403 -0
- package/configurationUtils/manifestKeyParser.ts +50 -10
- package/configurationUtils/modalBlocksParser.ts +252 -0
- package/entryActions/__tests__/buildEntryActions.test.ts +235 -0
- package/entryActions/aliasPresentation.ts +108 -0
- package/entryActions/buildEntryActions.ts +167 -0
- package/entryActions/index.ts +15 -0
- package/entryActions/types.ts +39 -0
- package/focusManager/FocusManager.ts +26 -0
- package/focusManager/__tests__/FocusManager.test.ts +9 -0
- package/localizationUtils/index.ts +12 -6
- package/logger/__tests__/xrayToolbox.test.ts +69 -0
- package/logger/xrayToolbox.ts +67 -0
- package/manifestUtils/__tests__/player.audioControls.test.js +158 -0
- package/manifestUtils/_internals/index.js +8 -3
- package/manifestUtils/defaultManifestConfigurations/generalContent.js +6 -0
- package/manifestUtils/defaultManifestConfigurations/player.js +338 -1
- package/manifestUtils/index.js +3 -0
- package/manifestUtils/keys.js +7 -2
- package/manifestUtils/mobileAction/container/__tests__/mobileActionButtonsContainer.test.js +21 -0
- package/manifestUtils/mobileAction/groups/__tests__/buildMobileActionButtonGroups.test.js +1 -1
- package/manifestUtils/mobileAction/groups/defaults.js +2 -1
- package/manifestUtils/modalBlocks.js +304 -0
- package/modalState/ContentViewModel.ts +113 -0
- package/modalState/EditableCollection.ts +17 -0
- package/modalState/EditableCollectionRegistry.ts +51 -0
- package/modalState/ModalOrchestrator.ts +213 -0
- package/modalState/RemoteEditableCollection.ts +235 -0
- package/modalState/__tests__/ContentViewModel.editable.test.ts +69 -0
- package/modalState/__tests__/ContentViewModel.test.ts +165 -0
- package/modalState/__tests__/EditableCollectionRegistry.test.ts +112 -0
- package/modalState/__tests__/ModalOrchestrator.phase3.test.ts +86 -0
- package/modalState/__tests__/RemoteEditableCollection.test.ts +415 -0
- package/modalState/__tests__/index.test.ts +30 -1
- package/modalState/__tests__/useBottomSheetContent.test.ts +349 -0
- package/modalState/__tests__/useModalStoreState.test.ts +142 -0
- package/modalState/index.ts +37 -83
- package/modalState/store.ts +109 -0
- package/modalState/types.ts +173 -0
- package/modalState/useBottomSheetContent.ts +109 -0
- package/navigationUtils/xrayNavigator.ts +12 -0
- package/package.json +3 -2
- package/playerUtils/__tests__/contentDataKeys.test.ts +297 -0
- package/playerUtils/__tests__/resolvePlayerActions.test.ts +138 -0
- package/playerUtils/__tests__/resolvePlayerTitleSubtitle.test.ts +180 -0
- package/playerUtils/contentDataKeys.ts +134 -0
- package/playerUtils/index.ts +37 -16
- package/playerUtils/isAudioItem.ts +26 -0
- package/playerUtils/resolvePlayerActions.ts +71 -0
- package/playerUtils/resolvePlayerTitleSubtitle.ts +76 -0
- package/pluginUtils/__tests__/pluginUtils.test.js +32 -0
- package/pluginUtils/index.ts +29 -0
- package/quickBrickAssets/__tests__/index.test.ts +18 -0
- package/quickBrickAssets/index.ts +35 -0
- package/reactHooks/__tests__/getPluginConfiguration.test.ts +82 -0
- package/reactHooks/actions/index.ts +74 -3
- package/reactHooks/cell-click/__tests__/index.test.js +64 -0
- package/reactHooks/cell-click/index.ts +21 -14
- package/reactHooks/connection/index.tsx +8 -5
- package/reactHooks/feed/__tests__/feedInvalidation.test.tsx +338 -0
- package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +8 -2
- package/reactHooks/feed/__tests__/useMarkPipesDataStale.test.tsx +243 -0
- package/reactHooks/feed/useFeedLoader.tsx +28 -1
- package/reactHooks/feed/useLoadPipesDataDispatch.ts +12 -11
- package/reactHooks/feed/useMarkPipesDataStale.ts +68 -23
- package/reactHooks/index.ts +2 -0
- package/reactHooks/layout/index.ts +1 -1
- package/reactHooks/navigation/__tests__/index.test.tsx +176 -1
- package/reactHooks/navigation/__tests__/usePresentScreen.test.ts +154 -0
- package/reactHooks/navigation/index.ts +2 -0
- package/reactHooks/navigation/usePresentScreen.ts +157 -0
- package/reactHooks/navigation/useRoute.ts +22 -5
- package/reactHooks/usePluginConfiguration.ts +88 -47
- package/reactHooks/utils/__tests__/index.test.js +22 -2
- package/reactHooks/utils/index.ts +11 -1
- package/riverComponetsMeasurementProvider/index.tsx +3 -1
- package/uiActionsRegistrator/__tests__/resolveActionIdentifiers.test.ts +93 -0
- package/uiActionsRegistrator/__tests__/subscribe.test.ts +133 -0
- package/uiActionsRegistrator/__tests__/usableActionItems.test.ts +52 -0
- package/uiActionsRegistrator/index.ts +25 -203
- package/uiActionsRegistrator/registry.ts +351 -0
- package/uiActionsRegistrator/resolveActionIdentifiers.ts +100 -0
- package/uiActionsRegistrator/usableActionItems.ts +66 -0
- package/zappFrameworkUtils/__tests__/localStorageHelper.test.ts +146 -0
- package/zappFrameworkUtils/localStorageHelper.ts +19 -15
- package/appUtils/contextKeysManager/__tests__/getKey/success/byReference.test.ts +0 -56
- package/appUtils/contextKeysManager/__tests__/getKeyByReference/failure.test.ts +0 -265
- package/appUtils/contextKeysManager/__tests__/getKeyByReference/success.test.ts +0 -303
- package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/failure.test.ts +0 -82
- package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/success.test.ts +0 -41
- package/appUtils/contextKeysManager/__tests__/setKey/success/saveItemButNotReference.test.ts +0 -208
- package/appUtils/contextKeysManager/__tests__/setReferenceForKey/failure.test.ts +0 -93
- package/appUtils/contextKeysManager/__tests__/setReferenceForKey/success.test.ts +0 -45
- package/appUtils/playerManager/usePlayerTitleSummaryOverlay.tsx +0 -56
- package/playerUtils/__tests__/getPlayerActionButtons.test.ts +0 -54
- package/playerUtils/getPlayerActionButtons.ts +0 -17
- /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
|
-
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
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)
|
|
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
|
-
|
|
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
|
-
});
|