@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>
70 lines (66 loc) • 2.99 kB
text/typescript
import { BREADCRUMBCATEGORYS, BrowserBreadcrumbTypes } from '@sdc-monitor/shared'
import { RouteChangeCollectType } from '@sdc-monitor/types'
import { sleepRun, _global } from '@sdc-monitor/utils'
import { BrowserClient } from '../../browserClient'
import historyRoutePlugin from '../../plugins/historyRoute'
describe('historyRoutePlugin', () => {
it('historyRoutePlugin will be invoked with pushState', (done) => {
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
historyRoutePlugin.monitor = jest.fn(historyRoutePlugin.monitor)
historyRoutePlugin.transform = jest.fn(historyRoutePlugin.transform)
historyRoutePlugin.consumer = jest.fn(historyRoutePlugin.consumer)
browserInstance.use([historyRoutePlugin])
const to = '/page'
_global.history.pushState({}, '', to)
sleepRun(() => {
expect((historyRoutePlugin.monitor as jest.Mock).mock.calls.length).toBe(1)
expect((historyRoutePlugin.transform as jest.Mock).mock.calls.length).toBe(1)
expect((historyRoutePlugin.consumer as jest.Mock).mock.calls.length).toBe(1)
const breadcrumStack = browserInstance.breadcrumb.getStack()
// validate data
expect(breadcrumStack[0].category).toBe(BREADCRUMBCATEGORYS.USER)
expect(breadcrumStack[0].type).toBe(BrowserBreadcrumbTypes.ROUTE)
expect((breadcrumStack[0].data as RouteChangeCollectType).to).toBe(`${to}`)
done()
})
})
it('historyRoutePlugin will be invoked with replaceState', (done) => {
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
browserInstance.use([historyRoutePlugin])
const to = '/page'
_global.history.replaceState({}, '', to)
sleepRun(() => {
const breadcrumStack = browserInstance.breadcrumb.getStack()
// validate data
expect(breadcrumStack[0].category).toBe(BREADCRUMBCATEGORYS.USER)
expect(breadcrumStack[0].type).toBe(BrowserBreadcrumbTypes.ROUTE)
expect((breadcrumStack[0].data as RouteChangeCollectType).to).toBe(`${to}`)
done()
})
})
it('historyRoutePlugin will be invoked with history.back', (done) => {
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
browserInstance.use([historyRoutePlugin])
const one = '/one'
const two = '/two'
_global.history.pushState({}, '', one)
_global.history.pushState({}, '', two)
_global.history.back()
sleepRun(() => {
const breadcrumStack = browserInstance.breadcrumb.getStack()
// validate data
expect(breadcrumStack[0].category).toBe(BREADCRUMBCATEGORYS.USER)
expect(breadcrumStack[0].type).toBe(BrowserBreadcrumbTypes.ROUTE)
expect((breadcrumStack[0].data as RouteChangeCollectType).to).toBe(`${one}`)
expect((breadcrumStack[1].data as RouteChangeCollectType).to).toBe(`${two}`)
expect((breadcrumStack[2].data as RouteChangeCollectType).to).toBe(`${one}`)
done()
})
})
})