File tree 1 file changed +43
-0
lines changed 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