test(service-worker): support mock requests with null/empty client ID (#23625)

PR Close #23625
This commit is contained in:
George Kalpakas 2018-05-01 01:19:31 +03:00 committed by Igor Minar
parent 1a655836cb
commit 38c678fdcd
2 changed files with 6 additions and 4 deletions

View File

@ -788,7 +788,8 @@ const manifestUpdateHash = sha1(JSON.stringify(manifestUpdate));
})(); })();
async function makeRequest( async function makeRequest(
scope: SwTestHarness, url: string, clientId = 'default', init?: Object): Promise<string|null> { scope: SwTestHarness, url: string, clientId: string | null = 'default',
init?: Object): Promise<string|null> {
const [resPromise, done] = scope.handleFetch(new MockRequest(url, init), clientId); const [resPromise, done] = scope.handleFetch(new MockRequest(url, init), clientId);
await done; await done;
const res = await resPromise; const res = await resPromise;

View File

@ -187,11 +187,12 @@ export class SwTestHarness implements ServiceWorkerGlobalScope, Adapter, Context
waitUntil(promise: Promise<void>): void {} waitUntil(promise: Promise<void>): void {}
handleFetch(req: Request, clientId?: string): [Promise<Response|undefined>, Promise<void>] { handleFetch(req: Request, clientId: string|null = null):
[Promise<Response|undefined>, Promise<void>] {
if (!this.eventHandlers.has('fetch')) { if (!this.eventHandlers.has('fetch')) {
throw new Error('No fetch handler registered'); throw new Error('No fetch handler registered');
} }
const event = new MockFetchEvent(req, clientId || null); const event = new MockFetchEvent(req, clientId);
this.eventHandlers.get('fetch') !.call(this, event); this.eventHandlers.get('fetch') !.call(this, event);
if (clientId) { if (clientId) {
@ -210,7 +211,7 @@ export class SwTestHarness implements ServiceWorkerGlobalScope, Adapter, Context
event = new MockMessageEvent(data, null); event = new MockMessageEvent(data, null);
} else { } else {
this.clients.add(clientId); this.clients.add(clientId);
event = new MockMessageEvent(data, this.clients.getMock(clientId) as any); event = new MockMessageEvent(data, this.clients.getMock(clientId) || null);
} }
this.eventHandlers.get('message') !.call(this, event); this.eventHandlers.get('message') !.call(this, event);
return event.ready; return event.ready;