serverless/test/unit/lib/cli/handle-error.test.js
2024-05-29 11:51:04 -04:00

59 lines
1.8 KiB
JavaScript

'use strict'
const chai = require('chai')
const sinon = require('sinon')
const observeOutput = require('@serverless/test/observe-output')
const handleError = require('../../../../lib/cli/handle-error')
const isStandaloneExecutable = require('../../../../lib/utils/is-standalone-executable')
const ServerlessError = require('../../../../lib/serverless-error')
chai.use(require('sinon-chai'))
const expect = chai.expect
describe('test/unit/lib/cli/handle-error.test.js', () => {
it('should output error', async () => {
const output = await observeOutput(() =>
handleError(new ServerlessError('Test error')),
)
expect(output).to.have.string('Test error')
})
if (isStandaloneExecutable) {
it('should report standalone installation', async () => {
const output = await observeOutput(() =>
handleError(new ServerlessError('Test error')),
)
expect(output).to.have.string('(standalone)')
})
}
it('should handle non-error objects', async () => {
const output = await observeOutput(() =>
handleError(handleError('NON-ERROR')),
)
expect(output).to.have.string('NON-ERROR')
})
describe('with mocked telemetry', () => {
beforeEach(() => {
sinon.resetHistory()
})
it('should add `location` to `failureReason` in telemetry if error code missing', async () => {
const {
telemetryData: { failureReason },
} = await handleError(new ServerlessError('Test error'), {})
expect(failureReason).to.have.property('location')
})
it('should add `location` to `failureReason` in telemetry for non-user errors', async () => {
const {
telemetryData: { failureReason },
} = await handleError(new Error('Test error'), {})
expect(failureReason).to.have.property('location')
})
})
})