Skip to content

Commit 4f2eb14

Browse files
committed
feat(testing): add serviceWorker tests
1 parent 4175c27 commit 4f2eb14

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

test/serviceWorker.test.ts

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
1+
import makeServiceWorkerEnv = require("service-worker-mock")
2+
const makeFetchMock = require("service-worker-mock/fetch")
3+
14
describe("serviceWorker", () => {
2-
it("should add the proper eventListeners", () => {
3-
// make sure install, active and fetch were added as event listeners
5+
let spy: jest.SpyInstance
6+
beforeEach(() => {
7+
Object.assign(
8+
global,
9+
makeServiceWorkerEnv(),
10+
makeFetchMock(),
11+
// If you're using sinon ur similar you'd probably use below instead of makeFetchMock
12+
// fetch: sinon.stub().returns(Promise.resolve())
13+
)
14+
jest.resetModules()
15+
16+
spy = jest.spyOn(console, "log")
17+
})
18+
19+
afterEach(() => {
20+
jest.restoreAllMocks()
21+
spy.mockRestore()
22+
})
23+
24+
it("should add listeners", () => {
25+
require("../src/browser/serviceWorker.ts")
26+
const _self = (self as unknown) as WorkerGlobalScope
27+
expect(_self.listeners.get("install")).toBeDefined()
28+
expect(_self.listeners.get("activate")).toBeDefined()
29+
expect(_self.listeners.get("fetch")).toBeDefined()
30+
})
31+
32+
it("should call the proper callbacks for 'install'", async () => {
33+
require("../src/browser/serviceWorker.ts")
34+
await self.trigger("install")
35+
expect(spy).toHaveBeenCalledWith("[Service Worker] installed")
436
})
37+
it("should call the proper callbacks for 'activate'", async () => {
38+
require("../src/browser/serviceWorker.ts")
39+
await self.trigger("activate")
540

6-
it("should call the proper callbacks", () => {
7-
// somehow test Line 8 with the events waitUntil..
41+
// Activate serviceWorker
42+
expect(spy).toHaveBeenCalledWith("[Service Worker] activated")
843
})
9-
})
44+
})

0 commit comments

Comments
 (0)