@@ -156,3 +156,57 @@ describe('utils tests', () => {
156
156
} )
157
157
} )
158
158
} )
159
+
160
+ describe ( 'Storage tests' , ( ) => {
161
+ describe ( 'getCollapsedCategory' , ( ) => {
162
+ let originalWindow
163
+ const mockWindow = ( queryParam ) => {
164
+ const mock = {
165
+ location : {
166
+ href : `https://example.com/page?${ queryParam } `
167
+ }
168
+ }
169
+ originalWindow = global . window
170
+ global . window = mock
171
+ }
172
+ after ( ( ) => global . window = originalWindow )
173
+
174
+ it ( 'collapses passed by default' , ( ) => {
175
+ mockWindow ( '' )
176
+ const collapsedItems = storageModule . getCollapsedCategory ( )
177
+ expect ( collapsedItems ) . to . eql ( [ 'passed' ] )
178
+ } )
179
+
180
+ it ( 'collapses specified outcomes' , ( ) => {
181
+ mockWindow ( 'collapsed=failed,error' )
182
+ const collapsedItems = storageModule . getCollapsedCategory ( )
183
+ expect ( collapsedItems ) . to . eql ( [ 'failed' , 'error' ] )
184
+ } )
185
+
186
+ it ( 'collapses all' , ( ) => {
187
+ mockWindow ( 'collapsed=all' )
188
+ const collapsedItems = storageModule . getCollapsedCategory ( )
189
+ expect ( collapsedItems ) . to . eql ( storageModule . possibleFilters )
190
+ } )
191
+
192
+ it ( 'handles case insensitive params' , ( ) => {
193
+ mockWindow ( 'collapsed=fAiLeD,ERROR,passed' )
194
+ const collapsedItems = storageModule . getCollapsedCategory ( )
195
+ expect ( collapsedItems ) . to . eql ( [ 'failed' , 'error' , 'passed' ] )
196
+ } )
197
+
198
+ const falsy = [
199
+ { param : 'collapsed' } ,
200
+ { param : 'collapsed=' } ,
201
+ { param : 'collapsed=""' } ,
202
+ { param : 'collapsed=\'\'' }
203
+ ]
204
+ falsy . forEach ( ( { param} ) => {
205
+ it ( `collapses none with ${ param } ` , ( ) => {
206
+ mockWindow ( param )
207
+ const collapsedItems = storageModule . getCollapsedCategory ( )
208
+ expect ( collapsedItems ) . to . be . empty
209
+ } )
210
+ } )
211
+ } )
212
+ } )
0 commit comments