describe('guardToPromiseFn', () => {
mockWarn()
it('calls the guard with to, from and, next', async () => {
+ expect.assertions(2)
const spy = jest.fn((to, from, next) => next())
await expect(guardToPromiseFn(spy, to, from)()).resolves.toEqual(undefined)
expect(spy).toHaveBeenCalledWith(to, from, expect.any(Function))
})
it('resolves if next is called with no arguments', async () => {
+ expect.assertions(1)
await expect(
guardToPromiseFn((to, from, next) => next(), to, from)()
).resolves.toEqual(undefined)
})
it('resolves if next is called with true', async () => {
+ expect.assertions(1)
await expect(
guardToPromiseFn((to, from, next) => next(true), to, from)()
).resolves.toEqual(undefined)
it('rejects if next is called with an error', async () => {
expect.assertions(1)
let error = new Error('nope')
- try {
- await guardToPromiseFn((to, from, next) => next(error), to, from)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ await expect(
+ guardToPromiseFn((to, from, next) => next(error), to, from)()
+ ).rejects.toBe(error)
})
it('rejects if guard rejects a Promise', async () => {
expect.assertions(1)
- let error = new Error('nope')
- try {
- await guardToPromiseFn(
+ await expect(
+ guardToPromiseFn(
async (to, from, next) => {
- throw error
+ throw new Error()
},
to,
from
)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ ).rejects.toThrowError()
})
it('rejects if guard throws an error', async () => {
expect.assertions(1)
let error = new Error('nope')
- try {
- await guardToPromiseFn(
+ await expect(
+ guardToPromiseFn(
(to, from, next) => {
throw error
},
to,
from
)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ ).rejects.toBe(error)
})
describe('no next argument', () => {
})
it('resolves no value is returned', async () => {
+ expect.assertions(1)
await expect(
guardToPromiseFn((to, from) => {}, to, from)()
).resolves.toEqual(undefined)
})
it('resolves if true is returned', async () => {
+ expect.assertions(1)
await expect(
guardToPromiseFn((to, from) => true, to, from)()
).resolves.toEqual(undefined)
it('rejects if an error is returned', async () => {
expect.assertions(1)
let error = new Error('nope')
- try {
- await guardToPromiseFn((to, from) => error, to, from)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ await expect(
+ guardToPromiseFn((to, from) => error, to, from)()
+ ).rejects.toBe(error)
})
it('rejects if guard rejects a Promise', async () => {
expect.assertions(1)
let error = new Error('nope')
- try {
- await guardToPromiseFn(
+ await expect(
+ guardToPromiseFn(
async (to, from) => {
throw error
},
to,
from
)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ ).rejects.toBe(error)
})
it('rejects if guard throws an error', async () => {
- expect.assertions(1)
let error = new Error('nope')
- try {
- await guardToPromiseFn(
+ await expect(
+ guardToPromiseFn(
(to, from) => {
throw error
},
to,
from
)()
- } catch (err) {
- expect(err).toBe(error)
- }
+ ).rejects.toBe(error)
})
})
expect.assertions(2)
await expect(
guardToPromiseFn((to, from, next) => false, to, from)()
- ).rejects.toEqual(expect.any(Error))
-
- // try {
- // await guardToPromiseFn((to, from, next) => false, to, from)()
- // } catch (error) {
- // expect(error).toEqual(expect.any(Error))
- // }
+ ).rejects.toThrowError()
expect('callback was never called').toHaveBeenWarned()
})