From d1abf4e897195f2eb9a7cc8b7ed3f94c362887f7 Mon Sep 17 00:00:00 2001 From: George Kalpakas Date: Tue, 1 May 2018 01:12:31 +0300 Subject: [PATCH] test(service-worker): improve adding clients in `SwTestHarness` (#23625) This commits changes how clients are added in `SwTestHarness`, so that the behavior in tests closer mimics what would happen in an actual ServiceWorker. It also removes auto-adding clients when calling `clients.get()`, which could hide bugs related to non-existing clients. PR Close #23625 --- packages/service-worker/worker/test/happy_spec.ts | 4 +--- packages/service-worker/worker/testing/scope.ts | 9 +++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/service-worker/worker/test/happy_spec.ts b/packages/service-worker/worker/test/happy_spec.ts index 87a57c67e7..19cf19b2d8 100644 --- a/packages/service-worker/worker/test/happy_spec.ts +++ b/packages/service-worker/worker/test/happy_spec.ts @@ -483,7 +483,6 @@ const manifestUpdateHash = sha1(JSON.stringify(manifestUpdate)); async_it('shows notifications for push notifications', async() => { expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; - scope.clients.add('default'); await scope.handlePush({ notification: { title: 'This is a test', @@ -665,7 +664,7 @@ const manifestUpdateHash = sha1(JSON.stringify(manifestUpdate)); server.assertSawRequestFor('/baz'); }); - async_it('does not redirect to index on a request that does not expect HTML', async() => { + async_it('does not redirect to index on a request that does not accept HTML', async() => { expect(await navRequest('/baz', {headers: {}})).toBeNull(); server.assertSawRequestFor('/baz'); @@ -793,7 +792,6 @@ async function makeRequest( const [resPromise, done] = scope.handleFetch(new MockRequest(url, init), clientId); await done; const res = await resPromise; - scope.clients.add(clientId); if (res !== undefined && res.ok) { return res.text(); } diff --git a/packages/service-worker/worker/testing/scope.ts b/packages/service-worker/worker/testing/scope.ts index e280041d18..3eb800bbc4 100644 --- a/packages/service-worker/worker/testing/scope.ts +++ b/packages/service-worker/worker/testing/scope.ts @@ -62,10 +62,7 @@ export class MockClients implements Clients { remove(clientId: string): void { this.clients.delete(clientId); } - async get(id: string): Promise { - this.add(id); - return this.clients.get(id) !as any as Client; - } + async get(id: string): Promise { return this.clients.get(id) !as any as Client; } getMock(id: string): MockClient|undefined { return this.clients.get(id); } @@ -197,6 +194,10 @@ export class SwTestHarness implements ServiceWorkerGlobalScope, Adapter, Context const event = new MockFetchEvent(req, clientId || null); this.eventHandlers.get('fetch') !.call(this, event); + if (clientId) { + this.clients.add(clientId); + } + return [event.response, event.ready]; }