Skip to content

Commit

Permalink
chore: improve error testing
Browse files Browse the repository at this point in the history
  • Loading branch information
pmb0 committed Oct 19, 2021
1 parent ecbef65 commit b7b04ac
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
18 changes: 12 additions & 6 deletions src/unleash/unleash.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import { ToggleRepository } from './repository/toggle-repository'
import { UnleashContext } from './unleash.context'
import { UnleashService } from './unleash.service'

jest.mock('@nestjs/common/services/logger.service')

type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>

function createFeatureToggle(
Expand Down Expand Up @@ -55,7 +57,6 @@ describe('UnleashService', () => {
let service: UnleashService
let toggles: ToggleRepository
let metrics: jest.Mocked<MetricsService>
let warnSpy: jest.SpyInstance

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
Expand Down Expand Up @@ -83,9 +84,6 @@ describe('UnleashService', () => {
metrics = module.get(MetricsService)
toggles = module.get(ToggleRepository)
service = await module.resolve(UnleashService)

// @ts-ignore (private)
warnSpy = jest.spyOn(service.logger, 'warn')
})

describe('_isEnabled()', () => {
Expand Down Expand Up @@ -149,7 +147,7 @@ describe('UnleashService', () => {
expect(service.isEnabled('foo')).toBe(false)
})

it('interprets exceptios as `false`', () => {
it('interprets exceptions as `false`', () => {
toggles.create(
createFeatureToggle({
name: 'foo',
Expand All @@ -158,6 +156,12 @@ describe('UnleashService', () => {
)

expect(service.isEnabled('foo')).toBe(false)

// @ts-ignore
expect(service.logger.error).toHaveBeenCalledWith(
'ohoh',
expect.any(String), // stack
)
})

it('warns when a stale toggle is used', () => {
Expand All @@ -170,7 +174,9 @@ describe('UnleashService', () => {
)

service.isEnabled('foo')
expect(warnSpy).toHaveBeenCalledWith('Toggle is stale: foo')

// @ts-ignore
expect(service.logger.warn).toHaveBeenCalledWith('Toggle is stale: foo')
})
})

Expand Down
6 changes: 4 additions & 2 deletions src/unleash/unleash.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ export class UnleashService<TCustomData = unknown> {
this.logger.debug(`Strategy "${data.name}" returned true`)
}
return isEnabled
} catch (error) {
this.logger.error((error as Error).stack)
} catch (_error) {
const error: Error =
_error instanceof Error ? _error : new Error(JSON.stringify(_error))
this.logger.error(error.message, error.stack)
return false
}
})
Expand Down

0 comments on commit b7b04ac

Please sign in to comment.