Skip to content

Commit 1f45797

Browse files
test(in-memory-store): adds test coverage
1 parent 97b61c8 commit 1f45797

File tree

2 files changed

+120
-0
lines changed

2 files changed

+120
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './key-storage';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
import {InMemoryStore} from "./in-memory.store";
2+
3+
describe('In Memory Store', () => {
4+
5+
let store: InMemoryStore;
6+
7+
beforeEach(() => {
8+
store = new InMemoryStore();
9+
});
10+
11+
it('should return the size of the store', () => {
12+
const key0 = 'key-0';
13+
const record0 = 'value';
14+
15+
const key1 = 'key-1';
16+
const record1 = 'value-1';
17+
18+
store.setItem(key0, record0);
19+
store.setItem(key1, record1);
20+
21+
const size = store.length;
22+
23+
expect(size).toEqual(2);
24+
});
25+
26+
it('should store a record', () => {
27+
const key = 'key';
28+
const record = 'value';
29+
store.setItem(key, record);
30+
expect(store.length).toBe(1);
31+
});
32+
33+
it('should return a stored record', () => {
34+
const key = 'key';
35+
const record = 'value';
36+
store.setItem(key, record);
37+
38+
const returnedRecord = store.getItem(key);
39+
expect(returnedRecord).toEqual(record);
40+
});
41+
42+
it('should respect the integrity of individual records', () => {
43+
const key1 = 'key';
44+
const record1 = 'value';
45+
46+
const key2 = 'key-2';
47+
const record2 = 'value-2';
48+
49+
store.setItem(key1, record1);
50+
store.setItem(key2, record2);
51+
52+
const returnedRecord1 = store.getItem(key1);
53+
const returnedRecord2 = store.getItem(key2);
54+
55+
expect(returnedRecord1).toEqual(record1);
56+
expect(returnedRecord2).toEqual(record2);
57+
});
58+
59+
it('should return null if a record doesnt exist', () => {
60+
const key = 'key';
61+
const returnedRecord = store.getItem(key);
62+
expect(returnedRecord).toBeNull();
63+
});
64+
65+
it('should remove records', () => {
66+
const key = 'key';
67+
const record = 'value';
68+
store.setItem(key, record);
69+
70+
expect(store.length).toBe(1);
71+
72+
store.removeItem(key);
73+
expect(store.length).toBe(0);
74+
});
75+
76+
it('should return null for removed records', () => {
77+
const key = 'key';
78+
const record = 'value';
79+
store.setItem(key, record);
80+
81+
expect(store.length).toBe(1);
82+
83+
store.removeItem(key);
84+
const returnedRecord = store.getItem(key);
85+
expect(returnedRecord).toBeNull();
86+
});
87+
88+
it('should return the zero indexed key for index 1', () => {
89+
const key0 = 'key-0';
90+
const record0 = 'value';
91+
92+
const key1 = 'key-1';
93+
const record1 = 'value-1';
94+
95+
store.setItem(key0, record0);
96+
store.setItem(key1, record1);
97+
98+
const returnedKey = store.key(1);
99+
expect(returnedKey).toEqual(key1);
100+
101+
});
102+
103+
it('should remove all keys', () => {
104+
const key0 = 'key-0';
105+
const record0 = 'value';
106+
107+
const key1 = 'key-1';
108+
const record1 = 'value-1';
109+
110+
store.setItem(key0, record0);
111+
store.setItem(key1, record1);
112+
113+
store.clear();
114+
const size = store.length;
115+
116+
expect(size).toEqual(0);
117+
});
118+
119+
})

0 commit comments

Comments
 (0)