-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
index.test.ts
74 lines (65 loc) · 1.9 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
import { nextTick } from 'vue-demi'
import { del, get, set, update } from 'idb-keyval'
import { useIDBKeyval } from '.'
const KEY = 'vue-use-idb-keyval'
const defaultState = {
name: 'Banana',
color: 'Yellow',
size: 'Medium',
count: 0,
}
beforeEach(() => {
vi.unmock('idb-keyval')
vi.mock('idb-keyval')
})
describe('useIDBKeyval', () => {
it('set/get', async () => {
const state = useIDBKeyval(KEY, { ...defaultState })
await nextTick()
expect(get).toHaveBeenCalled()
expect(set).toHaveBeenCalled()
expect(state.value).toEqual(defaultState)
})
it('update', async () => {
const state = useIDBKeyval(KEY, { ...defaultState })
state.value.name = 'Apple'
state.value.color = 'Red'
state.value.size = 'Giant'
state.value.count += 1
await nextTick()
expect(update).toHaveBeenCalled()
expect(state.value.name).toBe('Apple')
expect(state.value.color).toBe('Red')
expect(state.value.size).toBe('Giant')
expect(state.value.count).toBe(defaultState.count + 1)
})
it('del', async () => {
const state = useIDBKeyval(KEY, { ...defaultState })
state.value = null
await nextTick()
expect(del).toHaveBeenCalled()
})
it('string', async () => {
const state = useIDBKeyval(KEY, 'foo')
await nextTick()
expect(get).toHaveBeenCalled()
expect(set).toHaveBeenCalled()
expect(state.value).toEqual('foo')
state.value = 'bar'
await nextTick()
expect(state.value).toEqual('bar')
expect(update).toHaveBeenCalled()
})
it('array', async () => {
const defaultArray = ['foo', 'bar', 'baz']
const state = useIDBKeyval(KEY, [...defaultArray])
await nextTick()
expect(get).toHaveBeenCalled()
expect(set).toHaveBeenCalled()
expect(state.value).toEqual(defaultArray)
state.value[1] = 'boop'
await nextTick()
expect(state.value[1]).toEqual('boop')
expect(update).toHaveBeenCalled()
})
})