UNPKG

@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
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) }) })