-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathsheetsObserver.spec.js
More file actions
47 lines (38 loc) · 1.14 KB
/
sheetsObserver.spec.js
File metadata and controls
47 lines (38 loc) · 1.14 KB
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
import sheetsObserver, {observe, dynamicSheets} from '../utils/sheetsObserver'
const Mocks = {
// $FlowFixMe: get/set are not supported yet by flow
get sheetMock() {
const mock = {
attach: jest.fn(),
link: jest.fn(),
}
mock.attach.mockReturnValue(mock)
mock.link.mockReturnValue(mock)
return mock
}
}
it('should add sheet and return sheetId', () => {
const {sheetMock} = Mocks
const sheetId = sheetsObserver.add(sheetMock)
expect(dynamicSheets).toEqual([sheetMock])
expect(sheetId).toEqual(0)
})
it('should reattach updated sheet by observe call', () => {
const {sheetMock} = Mocks
const sheetId = sheetsObserver.add(sheetMock)
sheetsObserver.update(sheetId)
observe()
expect(sheetMock.attach).toHaveBeenCalled()
expect(sheetMock.link).toHaveBeenCalled()
})
it('should reattach updated sheet by listner', (done) => {
const {sheetMock} = Mocks
sheetsObserver.listen()
const sheetId = sheetsObserver.add(sheetMock)
sheetsObserver.update(sheetId)
setTimeout(() => {
expect(sheetMock.attach).toHaveBeenCalledTimes(1)
expect(sheetMock.link).toHaveBeenCalledTimes(1)
done()
}, 100)
})