Merge branch 'dev' into next
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { isPromise, noop } from '.';
|
||||
|
||||
export function callInterceptor(options: {
|
||||
interceptor?: (...args: any[]) => Promise<boolean> | boolean;
|
||||
done: () => void;
|
||||
args: any[];
|
||||
}) {
|
||||
const { interceptor, args, done } = options;
|
||||
|
||||
if (interceptor) {
|
||||
const returnVal = interceptor(...args);
|
||||
|
||||
if (isPromise(returnVal)) {
|
||||
returnVal
|
||||
.then((value) => {
|
||||
if (value) {
|
||||
done();
|
||||
}
|
||||
})
|
||||
.catch(noop);
|
||||
} else if (returnVal) {
|
||||
done();
|
||||
}
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import { later } from '../../../test';
|
||||
import { callInterceptor } from '../interceptor';
|
||||
|
||||
test('#callInterceptor', async () => {
|
||||
const done = jest.fn();
|
||||
callInterceptor({ done });
|
||||
expect(done).toHaveBeenCalledTimes(1);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: () => false,
|
||||
done,
|
||||
});
|
||||
expect(done).toHaveBeenCalledTimes(1);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: () => true,
|
||||
done,
|
||||
});
|
||||
expect(done).toHaveBeenCalledTimes(2);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: () => Promise.resolve(false),
|
||||
done,
|
||||
});
|
||||
await later();
|
||||
expect(done).toHaveBeenCalledTimes(2);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: () => Promise.resolve(true),
|
||||
done,
|
||||
});
|
||||
await later();
|
||||
expect(done).toHaveBeenCalledTimes(3);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: () => Promise.reject(),
|
||||
done,
|
||||
});
|
||||
await later();
|
||||
expect(done).toHaveBeenCalledTimes(3);
|
||||
|
||||
callInterceptor({
|
||||
interceptor: (...args) => {
|
||||
expect(args).toEqual(['foo']);
|
||||
},
|
||||
args: ['foo'],
|
||||
done,
|
||||
});
|
||||
expect(done).toHaveBeenCalledTimes(3);
|
||||
});
|
||||
Reference in New Issue
Block a user