@applicaster/zapp-react-native-bridge
Version:
Applicaster Zapp React Native modules
66 lines (50 loc) • 1.76 kB
text/typescript
import { localStorage as NativeLocalStorage } from "../__mocks__/android";
const { localStorage } = require("../LocalStorage");
const RN = require("react-native");
RN.NativeModules.LocalStorage = NativeLocalStorage;
RN.Platform.OS = "android";
const test_key = "test_key";
const test_value = "test_value";
const namespaced_key = "namespaced_key";
const namespaced_value = "namespaced_value";
const test_namespace = "test_namespace";
const obj_key = "obj_key";
const obj_value = { prop: "value" };
function setUpStorage() {
NativeLocalStorage.setItem(test_key, test_value);
NativeLocalStorage.setItem(namespaced_key, namespaced_value, test_namespace);
NativeLocalStorage.setItem(obj_key, JSON.stringify(obj_value));
}
describe("localStorage - getAllItems", () => {
beforeAll(setUpStorage);
it("retrieves all values", async () => {
const result = await localStorage.getAllItems();
expect(result).toEqual(
expect.objectContaining({
[test_key]: test_value,
[obj_key]: obj_value,
})
);
});
it("works as a bound method", async () => {
const getAllItems = localStorage.getAllItems;
const result = await getAllItems();
expect(result).toEqual(
expect.objectContaining({
[test_key]: test_value,
[obj_key]: obj_value,
})
);
});
it("retrieves all values in a namespace", async () => {
const result = await localStorage.getAllItems(test_namespace);
expect(result).toEqual(
expect.objectContaining({ [namespaced_key]: namespaced_value })
);
});
it("throws if an error happen on native side", async () => {
expect(() =>
localStorage.getAllItems("undefined_namespace")
).rejects.toThrowErrorMatchingSnapshot();
});
});