Skip to content

Commit be537c3

Browse files
committed
test: improve code coverage
1 parent 8f84acc commit be537c3

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/scheduler/scheduler.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,23 @@ describe('Scheduler', () => {
6161
expect(scheduler.scheduleRequest(createRequestSpin(4000))).rejects.toEqual(expect.objectContaining({ message: expect.stringContaining('stopped')})),
6262
expect(scheduler.scheduleRequest(createRequestSpin(2000))).rejects.toEqual(expect.objectContaining({ message: expect.stringContaining('stopped')})),
6363
expect(delay(1).then(() => scheduler.dispose())).resolves.toEqual(expect.any(Number)),
64+
expect(delay(5).then(() => scheduler.scheduleRequest(createRequestEcho('Too Late')))).rejects.toEqual(expect.objectContaining({ message: expect.stringContaining('stopped')})),
65+
expect(delay(2).then(() => scheduler.dispose())).resolves.toEqual(expect.any(Number)),
66+
expect(delay(3).then(() => scheduler.dispose())).resolves.toEqual(expect.any(Number)),
6467
]);
6568
});
6669

6770

6871
test('Termination of single request', run(scheduler => {
72+
const junkRequest: any = {};
6973
const spinRequest = createRequestSpin(5000);
7074
return Promise.all([
7175
expect(scheduler.scheduleRequest(spinRequest)).rejects.toEqual(expect.objectContaining({ message: expect.stringContaining('Request Terminated')})),
7276
expect(scheduler.scheduleRequest(createRequestEcho('One'))).resolves.toEqual(expect.objectContaining({ data: 'One' })),
7377
expect(scheduler.scheduleRequest(createRequestEcho('Two'))).resolves.toEqual(expect.objectContaining({ data: 'Two' })),
74-
expect(delay(1).then(() => scheduler.terminateRequest(spinRequest.id)))
78+
expect(scheduler.scheduleRequest(junkRequest)).rejects.toEqual(expect.objectContaining({ message: 'Bad Request' })),
79+
expect(scheduler.terminateRequest('Bad ID')).rejects.toEqual(expect.objectContaining({ message: 'Unknown Request' })),
80+
expect(delay(1).then(() => scheduler.terminateRequest(spinRequest.id))),
7581
]);
7682
}));
7783
});

src/scheduler/scheduler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createWorker, Worker } from '../worker/worker';
2-
import { Request, Response, isResponse, createRequest, ErrorResponse, isErrorResponse } from '../Procedures/procedure';
2+
import { Request, Response, isResponse, createRequest, ErrorResponse, isErrorResponse, isRequest } from '../Procedures/procedure';
33
import { UniqueID } from '../Procedures/uniqueId';
44

55
export class Scheduler {
@@ -26,6 +26,9 @@ export class Scheduler {
2626
if (this.requestQueue.has(request.id)) {
2727
return this.requestQueue.get(request.id)!.promise as Promise<U>;
2828
}
29+
if (!isRequest(request)) {
30+
return Promise.reject(new ErrorBadRequest('Bad Request', request))
31+
}
2932
const promise = new Promise<U>((resolve) => {
3033
this.pending.set(request.id, v => resolve(v as U));
3134
this.trigger();

0 commit comments

Comments
 (0)