1
+ import { field , Level } from "@coder/logger"
1
2
import { 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"
5
3
6
4
describe ( "register" , ( ) => {
7
5
const { window } = new JSDOM ( )
@@ -10,9 +8,18 @@ describe("register", () => {
10
8
global . navigator = window . navigator
11
9
global . location = window . location
12
10
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
+ }
16
23
17
24
beforeAll ( ( ) => {
18
25
Object . defineProperty ( global . navigator , "serviceWorker" , {
@@ -23,10 +30,11 @@ describe("register", () => {
23
30
} )
24
31
25
32
beforeEach ( ( ) => {
26
- spy = jest . spyOn ( global . navigator . serviceWorker , "register" )
33
+ jest . mock ( "@coder/logger" , ( ) => loggerModule )
27
34
} )
28
35
29
36
afterEach ( ( ) => {
37
+ mockRegisterFn . mockClear ( )
30
38
jest . resetModules ( )
31
39
} )
32
40
@@ -35,18 +43,14 @@ describe("register", () => {
35
43
} )
36
44
37
45
it ( "should register a ServiceWorker" , ( ) => {
38
- spy = jest . spyOn ( global . navigator . serviceWorker , "register" )
39
46
// Load service worker like you would in the browser
40
47
require ( "../src/browser/register" )
41
48
// 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 )
46
51
} )
47
52
48
53
it ( "should log an error if something doesn't work" , ( ) => {
49
- loggerSpy = jest . spyOn ( logger , "error" )
50
54
const message = "Can't find browser"
51
55
const error = new Error ( message )
52
56
@@ -57,10 +61,7 @@ describe("register", () => {
57
61
// Load service worker like you would in the browser
58
62
require ( "../src/browser/register" )
59
63
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 ( )
65
66
} )
66
67
} )
0 commit comments