1
1
jest . mock ( "webextension-polyfill" ) ;
2
2
3
- import { action } from "webextension-polyfill" ;
3
+ import { action , storage } from "webextension-polyfill" ;
4
+ import { BADGE_NUMBER_MANAGER_STORAGE_KEY } from "../constants" ;
4
5
5
6
type BadgeNumberManagerImport = typeof import ( "../BadgeNumberManager" ) ;
6
7
@@ -9,6 +10,7 @@ describe("BadgeNumberManager", () => {
9
10
10
11
beforeEach ( ( ) => {
11
12
jest . clearAllMocks ( ) ;
13
+ storage . local . clear ( ) ;
12
14
13
15
jest . isolateModules ( ( ) => {
14
16
const module = jest . requireActual < BadgeNumberManagerImport > (
@@ -19,51 +21,103 @@ describe("BadgeNumberManager", () => {
19
21
} ) ;
20
22
21
23
it ( "is a singleton" , async ( ) => {
22
- const badgeNumberManager1 = await BadgeNumberManager . init ( ) ;
24
+ const badgeNumberManager1 = await BadgeNumberManager . init ( true ) ;
23
25
const badgeNumberManager2 = await BadgeNumberManager . init ( ) ;
24
26
25
27
expect ( badgeNumberManager1 ) . toBe ( badgeNumberManager2 ) ;
26
28
} ) ;
27
29
28
- it ( "can higher the badge text" , async ( ) => {
29
- const badgeNumberManager = await BadgeNumberManager . init ( ) ;
30
+ it ( "restores values from storage" , async ( ) => {
31
+ await storage . local . set ( {
32
+ [ BADGE_NUMBER_MANAGER_STORAGE_KEY ] : {
33
+ currentNumber : 2 ,
34
+ } ,
35
+ } ) ;
30
36
37
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
31
38
await badgeNumberManager . higher ( ) ;
32
39
expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 1 , {
33
- text : "1 " ,
40
+ text : "3 " ,
34
41
} ) ;
42
+ } ) ;
35
43
36
- await badgeNumberManager . higher ( ) ;
37
- expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 2 , {
38
- text : "2" ,
44
+ describe ( "higher" , ( ) => {
45
+ it ( "can higher the badge text" , async ( ) => {
46
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
47
+
48
+ await badgeNumberManager . higher ( ) ;
49
+ expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 1 , {
50
+ text : "1" ,
51
+ } ) ;
52
+
53
+ await badgeNumberManager . higher ( ) ;
54
+ expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 2 , {
55
+ text : "2" ,
56
+ } ) ;
57
+ } ) ;
58
+
59
+ it ( "stores the new value" , async ( ) => {
60
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
61
+
62
+ await badgeNumberManager . higher ( ) ;
63
+ expect ( storage . local . set ) . toHaveBeenCalledTimes ( 1 ) ;
64
+ expect ( storage . local . set ) . toHaveBeenCalledWith ( {
65
+ [ BADGE_NUMBER_MANAGER_STORAGE_KEY ] : { currentNumber : 1 } ,
66
+ } ) ;
39
67
} ) ;
40
68
} ) ;
41
69
42
- it ( "can lower the badge text" , async ( ) => {
43
- const badgeNumberManager = await BadgeNumberManager . init ( ) ;
70
+ describe ( "lower" , ( ) => {
71
+ it ( "can lower the badge text" , async ( ) => {
72
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
44
73
45
- await badgeNumberManager . higher ( ) ;
46
- await badgeNumberManager . higher ( ) ;
74
+ await badgeNumberManager . higher ( ) ;
75
+ await badgeNumberManager . higher ( ) ;
47
76
48
- await badgeNumberManager . lower ( ) ;
49
- expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 3 , {
50
- text : "1" ,
77
+ await badgeNumberManager . lower ( ) ;
78
+ expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 3 , {
79
+ text : "1" ,
80
+ } ) ;
81
+
82
+ await badgeNumberManager . lower ( ) ;
83
+ expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 4 , {
84
+ text : "" ,
85
+ } ) ;
51
86
} ) ;
52
87
53
- await badgeNumberManager . lower ( ) ;
54
- expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 4 , {
55
- text : "" ,
88
+ it ( "stores the new value" , async ( ) => {
89
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
90
+
91
+ await badgeNumberManager . higher ( ) ;
92
+ await badgeNumberManager . lower ( ) ;
93
+ expect ( storage . local . set ) . toHaveBeenCalledTimes ( 2 ) ;
94
+ expect ( storage . local . set ) . toHaveBeenNthCalledWith ( 2 , {
95
+ [ BADGE_NUMBER_MANAGER_STORAGE_KEY ] : { currentNumber : 0 } ,
96
+ } ) ;
56
97
} ) ;
57
98
} ) ;
58
99
59
- it ( "can reset the badge text" , async ( ) => {
60
- const badgeNumberManager = await BadgeNumberManager . init ( ) ;
100
+ describe ( "reset" , ( ) => {
101
+ it ( "can reset the badge text" , async ( ) => {
102
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
61
103
62
- await badgeNumberManager . higher ( ) ;
104
+ await badgeNumberManager . higher ( ) ;
105
+
106
+ await badgeNumberManager . reset ( ) ;
107
+ expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 2 , {
108
+ text : "" ,
109
+ } ) ;
110
+ } ) ;
111
+
112
+ it ( "stores the new value" , async ( ) => {
113
+ const badgeNumberManager = await BadgeNumberManager . init ( true ) ;
63
114
64
- await badgeNumberManager . reset ( ) ;
65
- expect ( action . setBadgeText ) . toHaveBeenNthCalledWith ( 2 , {
66
- text : "" ,
115
+ await badgeNumberManager . higher ( ) ;
116
+ await badgeNumberManager . reset ( ) ;
117
+ expect ( storage . local . set ) . toHaveBeenCalledTimes ( 2 ) ;
118
+ expect ( storage . local . set ) . toHaveBeenNthCalledWith ( 2 , {
119
+ [ BADGE_NUMBER_MANAGER_STORAGE_KEY ] : { currentNumber : 0 } ,
120
+ } ) ;
67
121
} ) ;
68
122
} ) ;
69
123
} ) ;
0 commit comments