@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>
33 lines (31 loc) • 1.57 kB
text/typescript
import { BREADCRUMBCATEGORYS, BrowserBreadcrumbTypes, BrowserEventTypes } from '@sdc-monitor/shared'
import { RouteChangeCollectType } from '@sdc-monitor/types'
import { on, _global } from '@sdc-monitor/utils'
import { BrowserClient } from '../../browserClient'
import hashRoutePlugin from '../../plugins/hashRoute'
describe('hashRoutePlugin', () => {
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
hashRoutePlugin.monitor = jest.fn(hashRoutePlugin.monitor)
hashRoutePlugin.transform = jest.fn(hashRoutePlugin.transform)
hashRoutePlugin.consumer = jest.fn(hashRoutePlugin.consumer)
// delete temporary for use hashRoutePlugin,because hashRoutePlugin is enabled when not has onpopstate
delete _global.onpopstate
browserInstance.use([hashRoutePlugin])
it("hashRoutePlugin's func should be called by browserClient", (done) => {
const to = '#/three'
location.hash = to
on(_global, BrowserEventTypes.HASHCHANGE, function () {
expect((hashRoutePlugin.monitor as jest.Mock).mock.calls.length).toBe(1)
expect((hashRoutePlugin.transform as jest.Mock).mock.calls.length).toBe(1)
expect((hashRoutePlugin.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()
})
})
})