-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.test.ts
89 lines (69 loc) · 2.39 KB
/
index.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import storage from "./index";
const wait = (ms) =>
new Promise((resolve) => setTimeout(resolve, ms)).catch((e) => e);
describe("Storage wrapper", () => {
beforeEach(() => localStorage.clear());
it("respects default values", () => {
expect(storage.get("key")).toEqual(null);
expect(storage.get("key", "value")).toEqual("value");
});
it("stores a number", () => {
storage.set("test", 1);
expect(storage.get("test")).toEqual(1);
});
it("stores a string", () => {
storage.set("test", "value");
expect(storage.get("test")).toEqual("value");
});
it("stores an object", () => {
storage.set("test", { key: "value" });
expect(storage.get("test")).toMatchObject({ key: "value" });
});
it("stores null", () => {
storage.set("test", null);
expect(storage.get("test")).toBeNull();
});
it("stores items", () => {
storage.set("name", "user");
storage.set("otp", 123456);
expect(storage.get("name")).toEqual("user");
expect(storage.get("otp")).toEqual(123456);
});
it("removes item", () => {
storage.set("name", "user");
expect(storage.get("name")).toEqual("user");
storage.remove("name");
expect(storage.get("name")).toBeNull();
});
it("clears items", () => {
storage.set("name", "user");
storage.set("password", "qwedsa");
expect(localStorage).toHaveLength(2);
let clearedValues = storage.clear(true);
expect(clearedValues).toMatchObject({ name: "user", password: "qwedsa" });
expect(localStorage).toHaveLength(0);
});
it("persists item", () => {
storage.set("name", "user", { shouldPersist: true });
storage.set("password", "qwedsa");
let clearedValues = storage.clear();
expect(clearedValues).toMatchObject({ password: "qwedsa" });
expect(localStorage).toHaveLength(1);
});
it("clears all items on force", () => {
storage.set("name", "user", { shouldPersist: true });
storage.set("password", "qwedsa");
let clearedValues = storage.clear(true);
expect(clearedValues).toMatchObject({ name: "user", password: "qwedsa" });
expect(localStorage).toHaveLength(0);
});
it("respects ttl", async () => {
storage.set("otp", 123456, { ttl: 1000 });
await wait(1000 * 1.1);
expect(storage.get("otp")).toEqual(null);
});
it("gives snapshot", () => {
storage.set("key", "value");
expect(storage.getSnapshot()).toEqual({ key: "value" });
});
});