UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

209 lines (163 loc) 5.44 kB
import { ContextKeysManager } from "../../.."; import { StorageLevel } from "../../../consts"; describe("Context Keys Manager - setKey", () => { it("returns true if saved item but not reference with storage-level=default", async () => { // setup const key = "namespace.key"; const value = "value"; const storageLevel = StorageLevel.default; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn(), setItem: jest.fn().mockResolvedValueOnce(true), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedSecureStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const setReferenceForKey = jest .spyOn(contextManager, "setReferenceForKey") .mockResolvedValueOnce(false); // run const result = await contextManager.setKey({ key, value, storageLevel }); // verify expect(result).toBe(true); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedSessionStorage.setItem).toHaveBeenCalledWith( "key", value, "namespace" ); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.setItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.setItem).not.toHaveBeenCalled(); expect(setReferenceForKey).toHaveBeenCalledWith( "key", "namespace", StorageLevel.default ); }); it("returns true if saved item but not reference with storage-level=persisted", async () => { // setup const key = "namespace.key"; const value = "value"; const storageLevel = StorageLevel.persisted; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn(), setItem: jest.fn().mockResolvedValueOnce(true), removeItem: jest.fn(), }; const mockedSecureStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const setReferenceForKey = jest .spyOn(contextManager, "setReferenceForKey") .mockResolvedValueOnce(false); // run const result = await contextManager.setKey({ key, value, storageLevel }); // verify expect(result).toBe(true); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedSessionStorage.setItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.setItem).toHaveBeenCalledWith( "key", value, "namespace" ); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.setItem).not.toHaveBeenCalled(); expect(setReferenceForKey).toHaveBeenCalledWith( "key", "namespace", StorageLevel.persisted ); }); it("returns true if saved item but not reference with storage-level=secure", async () => { // setup const key = "namespace.key"; const value = "value"; const storageLevel = StorageLevel.secure; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn(), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedSecureStorage = { getItem: jest.fn(), setItem: jest.fn().mockResolvedValueOnce(true), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const setReferenceForKey = jest .spyOn(contextManager, "setReferenceForKey") .mockResolvedValueOnce(false); // run const result = await contextManager.setKey({ key, value, storageLevel }); // verify expect(result).toBe(true); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedSessionStorage.setItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.setItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.setItem).toHaveBeenCalledWith( "key", value, "namespace" ); expect(setReferenceForKey).toHaveBeenCalledWith( "key", "namespace", StorageLevel.secure ); }); });