File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ import { JSDOM } from "jsdom"
2+ import { registerServiceWorker } from "../src/browser/register"
3+ const { window } = new JSDOM ( )
4+ global . window = ( window as unknown ) as Window & typeof globalThis
5+ global . document = window . document
6+ global . navigator = window . navigator
7+
8+ describe ( "register" , ( ) => {
9+ const spy = jest . fn ( )
10+ beforeAll ( ( ) => {
11+ // register relies on navigator to be defined globally
12+ // this is because the code is called on the browser
13+ // so we're sure it will be defined
14+ // We have to cast/assert so that TS thinks it's the correct type
15+ Object . defineProperty ( global . navigator , "serviceWorker" , {
16+ value : {
17+ register : spy ,
18+ } ,
19+ } )
20+ // global.navigator.serviceWorker.register = (spy as unknown) as ServiceWorkerContainer["register"]
21+ } )
22+
23+ afterEach ( ( ) => {
24+ jest . resetAllMocks ( )
25+ } )
26+
27+ afterAll ( ( ) => {
28+ jest . restoreAllMocks ( )
29+ } )
30+ it ( "should register a ServiceWorker" , ( ) => {
31+ // call registerServiceWorker
32+ const path = "/hello"
33+ const mockOptions = {
34+ base : "" ,
35+ csStaticBase : "" ,
36+ logLevel : 0 ,
37+ }
38+ registerServiceWorker ( navigator , path , mockOptions )
39+ // expect spy to have been called
40+ expect ( spy ) . toHaveBeenCalled ( )
41+ expect ( spy ) . toHaveBeenCalledTimes ( 1 )
42+ } )
43+ } )
You can’t perform that action at this time.
0 commit comments