mutiple
Version:
A SDK for monitoring browser and miniPrograme errors
58 lines (56 loc) • 2.06 kB
text/typescript
import { HandleEvents } from '@mutiple/browser'
import { BREADCRUMBCATEGORYS, BREADCRUMBTYPES, HTTPTYPE } from '@mutiple/shared'
import { breadcrumb, httpTransform, transportData } from '@mutiple/core'
import { MITOHttp, EMethods } from '@mutiple/types'
import { getTimestamp, Severity } from '@mutiple/utils'
describe('handleEvents.ts', () => {
afterEach(() => {
breadcrumb.clear()
transportData.queue.clear()
})
const mockData: MITOHttp = {
type: HTTPTYPE.XHR,
traceId: '',
time: getTimestamp(),
method: EMethods.Get,
url: 'https://test.com',
reqData: {
test: 1
},
sTime: getTimestamp(),
elapsedTime: 320,
responseText: { message: 'ok' },
status: 200,
isSdkUrl: false
}
it('should handleHttp func work in status 200 http', () => {
HandleEvents.handleHttp(mockData, BREADCRUMBTYPES.XHR)
// for breadcrumb
const stack = breadcrumb.getStack()
expect(stack.length).toBe(1)
expect(stack[0].type).toBe(BREADCRUMBTYPES.XHR)
expect(stack[0].category).toBe(BREADCRUMBCATEGORYS.HTTP)
expect(stack[0].level).toBe(Severity.Info)
expect(stack[0].data).toEqual(httpTransform(mockData))
// for transportData
// expect(transportData.queue.getStack().length).toBe(0)
})
it('should handleHttp func work in status 0 http', () => {
mockData.status = 0
mockData.type = HTTPTYPE.FETCH
HandleEvents.handleHttp(mockData, BREADCRUMBTYPES.FETCH)
// for breadcrumb
const stack = breadcrumb.getStack()
const result = stack[0].data
expect(stack.length).toBe(2)
expect(stack[0].type).toBe(BREADCRUMBTYPES.FETCH)
expect(stack[0].category).toBe(BREADCRUMBCATEGORYS.HTTP)
expect(stack[0].level).toBe(Severity.Info)
expect(result).toMatchObject(httpTransform(mockData))
expect(stack[1].type).toBe(BREADCRUMBTYPES.FETCH)
expect(stack[1].category).toBe(BREADCRUMBCATEGORYS.EXCEPTION)
expect(stack[1].level).toBe(Severity.Error)
// for transportData
// expect(transportData.queue.getStack().length).toBe(1)
})
})