UNPKG

1.11 kBJavaScriptView Raw
1const DefaultStore = require('./index')
2
3describe('DefaultStore', () => {
4 it('can be created with or without new', () => {
5 let store = DefaultStore()
6 expect(typeof store).toBe('object')
7 store = new DefaultStore()
8 expect(typeof store).toBe('object')
9 })
10
11 it('merges in state using `setState`', () => {
12 const store = DefaultStore()
13 expect(store.getState()).toEqual({})
14
15 store.setState({
16 a: 1,
17 b: 2
18 })
19 expect(store.getState()).toEqual({ a: 1, b: 2 })
20
21 store.setState({ b: 3 })
22 expect(store.getState()).toEqual({ a: 1, b: 3 })
23 })
24
25 it('notifies subscriptions when state changes', () => {
26 let expected = []
27 let calls = 0
28 function listener (prevState, nextState, patch) {
29 calls++
30 expect([prevState, nextState, patch]).toEqual(expected)
31 }
32
33 const store = DefaultStore()
34 store.subscribe(listener)
35
36 expected = [{}, { a: 1, b: 2 }, { a: 1, b: 2 }]
37 store.setState({
38 a: 1,
39 b: 2
40 })
41
42 expected = [{ a: 1, b: 2 }, { a: 1, b: 3 }, { b: 3 }]
43 store.setState({ b: 3 })
44
45 expect(calls).toBe(2)
46 })
47})