60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import "@babel/polyfill"
|
|
const {
|
|
reportError,
|
|
clearError,
|
|
errorMap,
|
|
} = require(`../error-overlay-handler`)
|
|
|
|
import * as ErrorOverlay from "react-error-overlay"
|
|
|
|
jest.mock(`react-error-overlay`, () => {
|
|
return {
|
|
reportBuildError: jest.fn(),
|
|
dismissBuildError: jest.fn(),
|
|
startReportingRuntimeErrors: jest.fn(),
|
|
setEditorHandler: jest.fn(),
|
|
}
|
|
})
|
|
|
|
beforeEach(() => {
|
|
ErrorOverlay.reportBuildError.mockClear()
|
|
ErrorOverlay.dismissBuildError.mockClear()
|
|
})
|
|
|
|
describe(`errorOverlayHandler`, () => {
|
|
describe(`clearError()`, () => {
|
|
beforeEach(() => {
|
|
reportError(`foo`, `error`)
|
|
reportError(`bar`, `error`)
|
|
})
|
|
afterAll(() => {
|
|
clearError(`foo`)
|
|
clearError(`bar`)
|
|
})
|
|
it(`should clear specific error type`, () => {
|
|
expect(Object.keys(errorMap)).toHaveLength(2)
|
|
clearError(`foo`)
|
|
expect(Object.keys(errorMap)).toHaveLength(1)
|
|
expect(ErrorOverlay.dismissBuildError).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it(`should call ErrorOverlay to dismiss build errors`, () => {
|
|
clearError(`foo`)
|
|
clearError(`bar`)
|
|
expect(ErrorOverlay.dismissBuildError).toHaveBeenCalled()
|
|
})
|
|
})
|
|
describe(`reportErrorOverlay()`, () => {
|
|
it(`should not add error if it's empty and not call ErrorOverlay`, () => {
|
|
reportError(`foo`, null)
|
|
expect(Object.keys(errorMap)).toHaveLength(0)
|
|
expect(ErrorOverlay.reportBuildError).not.toHaveBeenCalled()
|
|
})
|
|
it(`should add error if it has a truthy value and call ErrorOverlay`, () => {
|
|
reportError(`foo`, `bar`)
|
|
expect(Object.keys(errorMap)).toHaveLength(1)
|
|
expect(ErrorOverlay.reportBuildError).toHaveBeenCalled()
|
|
})
|
|
})
|
|
})
|