UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

304 lines (243 loc) • 8.02 kB
import { ContextKeysManager, REFERENCE_NAMESPACE, NOTHING } from "../.."; import { buildNamespaceKey } from "../../utils"; import { StorageType } from "../../consts"; describe("Context Keys Manager - getKeyByReference", () => { it("returns null if storage is not found", async () => { // setup const key = "key"; const namespace = "namespace"; 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(), removeItem: jest.fn(), }; const mockedReferenceStorage = { getItem: jest.fn().mockResolvedValueOnce(undefined), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, referenceStorage: mockedReferenceStorage, }); // run const result = await contextManager.getKeyByReference(key, namespace); // verify expect(result).toEqual(NOTHING); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith( buildNamespaceKey(key, namespace), REFERENCE_NAMESPACE ); }); it("returns null if storage is unknown", async () => { // setup const key = "key"; const namespace = "namespace"; 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(), removeItem: jest.fn(), }; const mockedReferenceStorage = { getItem: jest.fn().mockResolvedValueOnce("unknown"), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, referenceStorage: mockedReferenceStorage, }); // run const result = await contextManager.getKeyByReference(key, namespace); // verify expect(result).toEqual(NOTHING); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith( buildNamespaceKey(key, namespace), REFERENCE_NAMESPACE ); }); it("returns value from session storage", async () => { // setup const key = "key"; const namespace = "namespace"; 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 mockedReferenceStorage = { getItem: jest.fn().mockResolvedValueOnce(StorageType.session), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, referenceStorage: mockedReferenceStorage, }); // run const result = await contextManager.getKeyByReference(key, namespace); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).toHaveBeenCalledWith(key, namespace); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith( buildNamespaceKey(key, namespace), REFERENCE_NAMESPACE ); }); it("returns value from local storage", async () => { // setup const key = "key"; const namespace = "namespace"; const value = "value"; const mockedLogger = { warn: jest.fn(), }; const mockedSessionStorage = { getItem: jest.fn(), 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 mockedReferenceStorage = { getItem: jest.fn().mockResolvedValueOnce(StorageType.local), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, referenceStorage: mockedReferenceStorage, }); // run const result = await contextManager.getKeyByReference(key, namespace); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).toHaveBeenCalledWith(key, namespace); expect(mockedSecureStorage.getItem).not.toHaveBeenCalled(); expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith( buildNamespaceKey(key, namespace), REFERENCE_NAMESPACE ); }); it("returns value from secure storage", async () => { // setup const key = "key"; const namespace = "namespace"; const value = "value"; 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().mockResolvedValueOnce(value), setItem: jest.fn(), removeItem: jest.fn(), }; const mockedReferenceStorage = { getItem: jest.fn().mockResolvedValueOnce(StorageType.secure), setItem: jest.fn(), removeItem: jest.fn(), }; const contextManager = new ContextKeysManager({ logger: mockedLogger, sessionStorage: mockedSessionStorage, localStorage: mockedLocalStorage, secureStorage: mockedSecureStorage, referenceStorage: mockedReferenceStorage, }); // run const result = await contextManager.getKeyByReference(key, namespace); // verify expect(result).toEqual(value); expect(mockedLogger.warn).not.toHaveBeenCalled(); expect(mockedSessionStorage.getItem).not.toHaveBeenCalled(); expect(mockedLocalStorage.getItem).not.toHaveBeenCalled(); expect(mockedSecureStorage.getItem).toHaveBeenCalledWith(key, namespace); expect(mockedReferenceStorage.getItem).toHaveBeenCalledWith( buildNamespaceKey(key, namespace), REFERENCE_NAMESPACE ); }); });