@sdc-monitor/demo
Version:
<div align="center"> <a href="#" target="_blank"> <img src="https://i.loli.net/2021/07/28/EvPwd4NjVH3tBfO.jpg" alt="mito-logo" height="90"> </a> <p>A Lightweight SDK For Monitor Web</p>
60 lines (56 loc) • 2.37 kB
text/typescript
import { Subscribe } from '@sdc-monitor/core'
import { BrowserEventTypes } from 'packages/shared/src'
describe('core/subscribe.ts', () => {
it('should watch and notify work', () => {
const mockData = { mockData: 'mock' }
const watchCallback = jest.fn((data) => {
expect(data).toBe(mockData)
})
const watchCallbackTwo = jest.fn((data) => {
expect(data).toBe(mockData)
})
// throw error
// const watchCallbackThree = jest.fn((data) => {
// throw new Error('call back error')
// })
const subscribe = new Subscribe<BrowserEventTypes>()
const targetEventName = BrowserEventTypes.CUSTOMER
subscribe.watch(targetEventName, watchCallback)
subscribe.watch(targetEventName, watchCallbackTwo)
// subscribe.watch(targetEventName, watchCallbackThree)
subscribe.notify(targetEventName, mockData)
expect(watchCallback.mock.calls.length).toBe(1)
// first args
expect(watchCallback.mock.calls[0][0]).toBe(mockData)
expect(watchCallbackTwo.mock.calls.length).toBe(1)
expect(watchCallbackTwo.mock.calls[0][0]).toBe(mockData)
// can notify multiple times
subscribe.notify(targetEventName, mockData)
expect(watchCallback.mock.calls.length).toBe(2)
expect(watchCallbackTwo.mock.calls.length).toBe(2)
})
it('should subscribe multiple times', () => {
// one
const mockData_one = { mockData: 'mock' }
const watchCallback_one = jest.fn((data) => {
expect(data).toBe(mockData_one)
})
const targetEventName_one = BrowserEventTypes.CUSTOMER
// two
const mockData_two = { mockData: 'mock_two' }
const watchCallback_two = jest.fn((data) => {
expect(data).toBe(mockData_two)
})
const targetEventName_two = BrowserEventTypes.CONSOLE
const subscribe = new Subscribe<BrowserEventTypes>()
subscribe.watch(targetEventName_one, watchCallback_one)
subscribe.notify(targetEventName_one, mockData_one)
expect(watchCallback_one.mock.calls.length).toBe(1)
expect(watchCallback_one.mock.calls[0][0]).toBe(mockData_one)
subscribe.watch(targetEventName_two, watchCallback_two)
subscribe.notify(targetEventName_two, mockData_two)
subscribe.notify(targetEventName_two, mockData_two)
expect(watchCallback_two.mock.calls.length).toBe(2)
expect(watchCallback_two.mock.calls[0][0]).toBe(mockData_two)
})
})