UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

239 lines (184 loc) • 6.1 kB
import { ContextKeysManager, NOTHING } from "../../.."; describe("Context Keys Manager - getKey", () => { it("returns value if found in session-storage", async () => { // setup const key = "namespace.key"; const value = "value"; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn().mockResolvedValueOnce(value), 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(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const getKeyByReference = jest .spyOn(contextManager, "getKeyByReference") .mockResolvedValueOnce(NOTHING); // run const result = await contextManager.getKey(key); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(getKeyByReference).toHaveBeenCalledWith("key", "namespace"); expect(mockedSessionStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); }); it("returns value if not found in session-storage, but found in local-storage", async () => { // setup const key = "namespace.key"; const value = "value"; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn().mockResolvedValueOnce(value), 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 getKeyByReference = jest .spyOn(contextManager, "getKeyByReference") .mockResolvedValueOnce(NOTHING); // run const result = await contextManager.getKey(key); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(getKeyByReference).toHaveBeenCalledWith("key", "namespace"); expect(mockedSessionStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); expect(mockedLocalStorage.getItem).toHaveBeenCalledWith("key", "namespace"); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); }); it("returns value if not found in session/local storages, but found in secure-storage", async () => { // setup const key = "namespace.key"; const value = "value"; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedSecureStorage = { getItem: jest.fn().mockResolvedValueOnce(value), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const getKeyByReference = jest .spyOn(contextManager, "getKeyByReference") .mockResolvedValueOnce(NOTHING); // run const result = await contextManager.getKey(key); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(getKeyByReference).toHaveBeenCalledWith("key", "namespace"); expect(mockedSessionStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); expect(mockedLocalStorage.getItem).toHaveBeenCalledWith("key", "namespace"); expect(mockedSecureStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); }); it("returns null if not found in any storage", async () => { // setup const key = "namespace.key"; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedLocalStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedSecureStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, }); const getKeyByReference = jest .spyOn(contextManager, "getKeyByReference") .mockResolvedValueOnce(NOTHING); // run const result = await contextManager.getKey(key); // verify expect(result).toBeNull(); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(getKeyByReference).toHaveBeenCalledWith("key", "namespace"); expect(mockedSessionStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); expect(mockedLocalStorage.getItem).toHaveBeenCalledWith("key", "namespace"); expect(mockedSecureStorage.getItem).toHaveBeenCalledWith( "key", "namespace" ); }); });