@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
169 lines (124 loc) • 4.32 kB
text/typescript
import { ContextKeysManager } from "../..";
describe("Context Keys Manager - getKeys", () => {
it("returns value if found by getKey", async () => {
// setup
const keys = ["namespace.key"];
const value = "value";
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value);
expect(result).toEqual(map);
expect(getKey).toHaveBeenCalledTimes(1);
expect(getKey.mock.calls).toEqual([keys]);
});
it("returns value if found by getKey", async () => {
// setup
const keys = [{ key: "key", namespace: "namespace" }];
const value = "value";
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value);
expect(result).toEqual(map);
expect(getKey).toHaveBeenCalledTimes(1);
expect(getKey.mock.calls).toEqual([keys]);
});
it("returns value if found by getKey", async () => {
// setup
const keys = [
{ key: "key1", namespace: "namespace1" },
{ key: "key2", namespace: "namespace2" },
];
const value1 = "value1";
const value2 = "value2";
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value1)
.mockResolvedValueOnce(value2);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value1);
map.set(keys[1], value2);
expect(result).toEqual(map);
expect(result.get(keys[0])).toEqual(value1);
expect(result.get(keys[1])).toEqual(value2);
expect(getKey).toHaveBeenCalledTimes(2);
expect(getKey.mock.calls).toEqual([[keys[0]], [keys[1]]]);
});
it("returns values if found by getKey", async () => {
// setup
const keys = ["namespace.key1", "namespace.key2"];
const value1 = "value1";
const value2 = "value2";
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value1)
.mockResolvedValueOnce(value2);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value1);
map.set(keys[1], value2);
expect(result).toEqual(map);
expect(result.get(keys[0])).toEqual(value1);
expect(result.get(keys[1])).toEqual(value2);
expect(getKey).toHaveBeenCalledTimes(2);
expect(getKey.mock.calls).toEqual([[keys[0]], [keys[1]]]);
});
it("returns values first is not found and second is found", async () => {
// setup
const keys = ["namespace.key1", "namespace.key2"];
const value1 = null;
const value2 = "value2";
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value1)
.mockResolvedValueOnce(value2);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value1);
map.set(keys[1], value2);
expect(result).toEqual(map);
expect(getKey).toHaveBeenCalledTimes(2);
expect(getKey.mock.calls).toEqual([[keys[0]], [keys[1]]]);
});
it("returns values first is found and second is not found", async () => {
// setup
const keys = ["namespace.key1", "namespace.key2"];
const value1 = "value1";
const value2 = null;
const contextManager = new ContextKeysManager({});
const getKey = jest
.spyOn(contextManager, "getKey")
.mockResolvedValueOnce(value1)
.mockResolvedValueOnce(value2);
// run
const result = await contextManager.getKeys(keys);
// verify
const map = new Map();
map.set(keys[0], value1);
map.set(keys[1], value2);
expect(result).toEqual(map);
expect(getKey).toHaveBeenCalledTimes(2);
expect(getKey.mock.calls).toEqual([[keys[0]], [keys[1]]]);
});
});