/
two-way-store.test.js
49 lines (39 loc) · 1.43 KB
/
two-way-store.test.js
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
import TwoWayStore from './two-way-store.js'
describe('Create empty key store', () => {
const store = new TwoWayStore()
it('A should have empty keys', () => {
expect(store.getKeysA()).toEqual([])
})
it('B should have empty values', () => {
expect(store.getKeysB()).toEqual([])
})
it('It should have empty entries', () => {
expect(store.getEntries()).toEqual([])
})
})
describe('Create store with two way keys', () => {
const store = new TwoWayStore([
['user-id', 'shelf-key', { react: 'like' }],
['user-id2', 'shelf-key', { react: 'love' }],
['user-id3', 'shelf-key', { react: 'care' }],
])
it('Has correct keysA', () => {
expect(store.getKeysA()).toEqual(['user-id', 'user-id2', 'user-id3'])
})
it('Has correct keysB', () => {
expect(store.getKeysB()).toEqual(['shelf-key'])
})
it('Has correct entries', () => {
expect(store.getEntries()).toEqual([['user-id', 'shelf-key', { react: 'like' }], ['user-id2', 'shelf-key', { react: 'love' }], ['user-id3', 'shelf-key', { react: 'care' }]])
})
it('Got correct element by keyA', () => {
const keysB = store.getKeysBByKeyA('user-id')
const value = store.getValue('user-id', keysB[0])
expect(value).toEqual({ react: 'like' })
})
it('Got correct element by keyB', () => {
const keysA = store.getKeysAByKeyB('shelf-key')
const value = store.getValue(keysA[0], 'shelf-key')
expect(value).toEqual({ react: 'like' })
})
})