1
1
/* eslint-disable no-console */
2
- import { fireEvent , waitFor } from '@testing-library/react' ;
3
2
import { renderHook } from '@testing-library/react-hooks' ;
3
+ import { fireEvent } from '@testing-library/react' ;
4
4
5
5
import useServiceWorker from 'hooks/useServiceWorker' ;
6
6
@@ -25,6 +25,8 @@ describe('useServiceWorker', () => {
25
25
afterEach ( ( ) => {
26
26
navigatorSpy . mockRestore ( ) ;
27
27
consoleSpy . mockRestore ( ) ;
28
+
29
+ serviceWorkerUrl = undefined ;
28
30
} ) ;
29
31
30
32
test ( 'Should register a ServiceWorker' , async ( ) => {
@@ -37,14 +39,12 @@ describe('useServiceWorker', () => {
37
39
} ,
38
40
} ) ) ;
39
41
40
- renderHook ( ( ) => useServiceWorker ( true ) ) ;
42
+ renderHook ( ( ) => useServiceWorker ( { isForce : true } ) ) ;
41
43
42
44
fireEvent ( window , new Event ( 'load' ) ) ;
43
45
44
- await waitFor ( ( ) => {
45
- expect ( console . log ) . toBeCalledWith ( 'Service Worker registration successful with scope: ' , 'test' ) ;
46
- expect ( serviceWorkerUrl ) . toBe ( '/sw.js' ) ;
47
- } ) ;
46
+ expect ( await serviceWorkerUrl ) . toBe ( '/sw.js' ) ;
47
+ expect ( await console . log ) . toBeCalledWith ( 'Service Worker registration successful with scope: ' , 'test' ) ;
48
48
} ) ;
49
49
50
50
test ( 'Should catch an error' , async ( ) => {
@@ -54,32 +54,54 @@ describe('useServiceWorker', () => {
54
54
} ,
55
55
} ) ) ;
56
56
57
- renderHook ( ( ) => useServiceWorker ( true ) ) ;
57
+ renderHook ( ( ) => useServiceWorker ( { isForce : true } ) ) ;
58
58
59
59
fireEvent ( window , new Event ( 'load' ) ) ;
60
60
61
- await waitFor ( ( ) => expect ( console . log ) . toBeCalledWith ( 'Service Worker registration failed: ' , undefined ) ) ;
61
+ expect ( await console . log ) . toBeCalledWith ( 'Service Worker registration failed: ' , undefined ) ;
62
62
} ) ;
63
63
64
64
test ( 'Should not register (dev)' , async ( ) => {
65
65
navigatorSpy . mockImplementation ( ( ) => ( {
66
66
serviceWorker : {
67
- register : jest . fn ( ( ) => Promise . resolve ( { scope : 'test' } ) ) ,
67
+ register : jest . fn ( ( url : string ) => {
68
+ serviceWorkerUrl = url ;
69
+ return Promise . resolve ( { scope : 'test' } ) ;
70
+ } ) ,
68
71
} ,
69
72
} ) ) ;
70
73
71
74
renderHook ( ( ) => useServiceWorker ( ) ) ;
72
75
73
76
fireEvent ( window , new Event ( 'load' ) ) ;
74
77
75
- await waitFor ( ( ) => expect ( console . log ) . not . toBeCalled ( ) ) ;
78
+ expect ( await serviceWorkerUrl ) . toBe ( undefined ) ;
79
+ expect ( await console . log ) . not . toBeCalled ( ) ;
80
+ } ) ;
81
+
82
+ test ( 'Should not register (disable)' , async ( ) => {
83
+ navigatorSpy . mockImplementation ( ( ) => ( {
84
+ serviceWorker : {
85
+ register : jest . fn ( ( url : string ) => {
86
+ serviceWorkerUrl = url ;
87
+ return Promise . resolve ( { scope : 'test' } ) ;
88
+ } ) ,
89
+ } ,
90
+ } ) ) ;
91
+
92
+ renderHook ( ( ) => useServiceWorker ( { isDisable : true , isForce : true } ) ) ;
93
+
94
+ fireEvent ( window , new Event ( 'load' ) ) ;
95
+
96
+ expect ( serviceWorkerUrl ) . toBe ( undefined ) ;
97
+ expect ( await console . log ) . not . toBeCalled ( ) ;
76
98
} ) ;
77
99
78
100
test ( 'Should not register (no serviceWorker)' , async ( ) => {
79
101
navigatorSpy . mockImplementation ( ( ) => ( { } ) ) ;
80
102
81
- renderHook ( ( ) => useServiceWorker ( true ) ) ;
103
+ renderHook ( ( ) => useServiceWorker ( { isForce : true } ) ) ;
82
104
83
- await waitFor ( ( ) => expect ( console . log ) . not . toBeCalled ( ) ) ;
105
+ expect ( await console . log ) . not . toBeCalled ( ) ;
84
106
} ) ;
85
107
} ) ;
0 commit comments