1+ import { field , Level } from "@coder/logger"
12import { JSDOM } from "jsdom"
2- // Note: we need to import logger from the root
3- // because this is the logger used in logError in ../src/common/util
4- import { logger } from "../node_modules/@coder/logger"
53
64describe ( "register" , ( ) => {
75 const { window } = new JSDOM ( )
@@ -10,9 +8,18 @@ describe("register", () => {
108 global . navigator = window . navigator
119 global . location = window . location
1210
13- let spy : jest . SpyInstance
14- let loggerSpy : jest . SpyInstance
15- const mockRegisterFn = jest . fn ( ( ) => console . log ( "Mock register fn called" ) )
11+ const mockRegisterFn = jest . fn ( )
12+ const loggerModule = {
13+ field,
14+ level : Level . Info ,
15+ logger : {
16+ debug : jest . fn ( ) ,
17+ error : jest . fn ( ) ,
18+ info : jest . fn ( ) ,
19+ trace : jest . fn ( ) ,
20+ warn : jest . fn ( ) ,
21+ } ,
22+ }
1623
1724 beforeAll ( ( ) => {
1825 Object . defineProperty ( global . navigator , "serviceWorker" , {
@@ -23,10 +30,11 @@ describe("register", () => {
2330 } )
2431
2532 beforeEach ( ( ) => {
26- spy = jest . spyOn ( global . navigator . serviceWorker , "register" )
33+ jest . mock ( "@coder/logger" , ( ) => loggerModule )
2734 } )
2835
2936 afterEach ( ( ) => {
37+ mockRegisterFn . mockClear ( )
3038 jest . resetModules ( )
3139 } )
3240
@@ -35,18 +43,14 @@ describe("register", () => {
3543 } )
3644
3745 it ( "should register a ServiceWorker" , ( ) => {
38- spy = jest . spyOn ( global . navigator . serviceWorker , "register" )
3946 // Load service worker like you would in the browser
4047 require ( "../src/browser/register" )
4148 // Load service worker like you would in the browser
42- // expect spy to have been called
43- expect ( spy ) . toHaveBeenCalled ( )
44- expect ( spy ) . toHaveBeenCalledTimes ( 1 )
45- spy . mockClear ( )
49+ expect ( mockRegisterFn ) . toHaveBeenCalled ( )
50+ expect ( mockRegisterFn ) . toHaveBeenCalledTimes ( 1 )
4651 } )
4752
4853 it ( "should log an error if something doesn't work" , ( ) => {
49- loggerSpy = jest . spyOn ( logger , "error" )
5054 const message = "Can't find browser"
5155 const error = new Error ( message )
5256
@@ -57,10 +61,7 @@ describe("register", () => {
5761 // Load service worker like you would in the browser
5862 require ( "../src/browser/register" )
5963
60- expect ( spy ) . toHaveBeenCalled ( )
61- expect ( loggerSpy ) . toHaveBeenCalled ( )
62- // expect(loggerSpy).toHaveBeenCalledTimes(1)
63- // Because we use logError, it will log the prefix along with the error message
64- // expect(loggerSpy).toHaveBeenCalledWith(`[Service Worker] registration: ${error.message} ${error.stack}`)
64+ expect ( mockRegisterFn ) . toHaveBeenCalled ( )
65+ expect ( loggerModule . logger . error ) . toHaveBeenCalled ( )
6566 } )
6667} )
0 commit comments