@furystack/shades-common-components 12.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +26 -0
  3. package/esm/components/cache-view.d.ts +46 -0
  4. package/esm/components/cache-view.d.ts.map +1 -0
  5. package/esm/components/cache-view.js +65 -0
  6. package/esm/components/cache-view.js.map +1 -0
  7. package/esm/components/cache-view.spec.d.ts +2 -0
  8. package/esm/components/cache-view.spec.d.ts.map +1 -0
  9. package/esm/components/cache-view.spec.js +183 -0
  10. package/esm/components/cache-view.spec.js.map +1 -0
  11. package/esm/components/command-palette/command-palette-input.spec.js +148 -148
  12. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
  13. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +258 -258
  14. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  15. package/esm/components/context-menu/context-menu-manager.spec.js +211 -217
  16. package/esm/components/context-menu/context-menu-manager.spec.js.map +1 -1
  17. package/esm/components/data-grid/body.spec.js +173 -173
  18. package/esm/components/data-grid/body.spec.js.map +1 -1
  19. package/esm/components/data-grid/data-grid.spec.js +39 -130
  20. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  21. package/esm/components/index.d.ts +1 -0
  22. package/esm/components/index.d.ts.map +1 -1
  23. package/esm/components/index.js +1 -0
  24. package/esm/components/index.js.map +1 -1
  25. package/esm/components/skeleton.d.ts.map +1 -1
  26. package/esm/components/skeleton.js +2 -11
  27. package/esm/components/skeleton.js.map +1 -1
  28. package/esm/components/skeleton.spec.js +6 -55
  29. package/esm/components/skeleton.spec.js.map +1 -1
  30. package/esm/services/click-away-service.spec.js +14 -12
  31. package/esm/services/click-away-service.spec.js.map +1 -1
  32. package/esm/services/list-service.spec.js +170 -141
  33. package/esm/services/list-service.spec.js.map +1 -1
  34. package/esm/services/tree-service.spec.js +190 -159
  35. package/esm/services/tree-service.spec.js.map +1 -1
  36. package/package.json +8 -8
  37. package/src/components/cache-view.spec.tsx +210 -0
  38. package/src/components/cache-view.tsx +103 -0
  39. package/src/components/command-palette/command-palette-input.spec.tsx +183 -194
  40. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +303 -321
  41. package/src/components/context-menu/context-menu-manager.spec.ts +213 -258
  42. package/src/components/data-grid/body.spec.tsx +266 -276
  43. package/src/components/data-grid/data-grid.spec.tsx +137 -232
  44. package/src/components/index.ts +1 -0
  45. package/src/components/skeleton.spec.tsx +6 -73
  46. package/src/components/skeleton.tsx +2 -11
  47. package/src/services/click-away-service.spec.ts +14 -16
  48. package/src/services/list-service.spec.ts +170 -172
  49. package/src/services/tree-service.spec.ts +191 -207
@@ -1,3 +1,4 @@
1
+ import { using } from '@furystack/utils'
1
2
  import { describe, expect, it } from 'vitest'
2
3
  import { ListService } from './list-service.js'
3
4
 
@@ -18,339 +19,336 @@ describe('ListService', () => {
18
19
  describe('selection helpers', () => {
19
20
  it('should check if item is selected', () => {
20
21
  const { service, items } = createTestService()
21
- service.selection.setValue([items[0]])
22
+ using(service, () => {
23
+ service.selection.setValue([items[0]])
22
24
 
23
- expect(service.isSelected(items[0])).toBe(true)
24
- expect(service.isSelected(items[1])).toBe(false)
25
-
26
- service[Symbol.dispose]()
25
+ expect(service.isSelected(items[0])).toBe(true)
26
+ expect(service.isSelected(items[1])).toBe(false)
27
+ })
27
28
  })
28
29
 
29
30
  it('should add item to selection', () => {
30
31
  const { service, items } = createTestService()
31
- service.addToSelection(items[0])
32
-
33
- expect(service.selection.getValue()).toContain(items[0])
32
+ using(service, () => {
33
+ service.addToSelection(items[0])
34
34
 
35
- service[Symbol.dispose]()
35
+ expect(service.selection.getValue()).toContain(items[0])
36
+ })
36
37
  })
37
38
 
38
39
  it('should remove item from selection', () => {
39
40
  const { service, items } = createTestService()
40
- service.selection.setValue([items[0], items[1]])
41
- service.removeFromSelection(items[0])
41
+ using(service, () => {
42
+ service.selection.setValue([items[0], items[1]])
43
+ service.removeFromSelection(items[0])
42
44
 
43
- expect(service.selection.getValue()).not.toContain(items[0])
44
- expect(service.selection.getValue()).toContain(items[1])
45
-
46
- service[Symbol.dispose]()
45
+ expect(service.selection.getValue()).not.toContain(items[0])
46
+ expect(service.selection.getValue()).toContain(items[1])
47
+ })
47
48
  })
48
49
 
49
50
  it('should toggle selection on', () => {
50
51
  const { service, items } = createTestService()
51
- service.toggleSelection(items[0])
52
-
53
- expect(service.isSelected(items[0])).toBe(true)
52
+ using(service, () => {
53
+ service.toggleSelection(items[0])
54
54
 
55
- service[Symbol.dispose]()
55
+ expect(service.isSelected(items[0])).toBe(true)
56
+ })
56
57
  })
57
58
 
58
59
  it('should toggle selection off', () => {
59
60
  const { service, items } = createTestService()
60
- service.selection.setValue([items[0]])
61
- service.toggleSelection(items[0])
61
+ using(service, () => {
62
+ service.selection.setValue([items[0]])
63
+ service.toggleSelection(items[0])
62
64
 
63
- expect(service.isSelected(items[0])).toBe(false)
64
-
65
- service[Symbol.dispose]()
65
+ expect(service.isSelected(items[0])).toBe(false)
66
+ })
66
67
  })
67
68
  })
68
69
 
69
70
  describe('handleKeyDown', () => {
70
71
  it('should not handle keyboard when not focused', () => {
71
72
  const { service, items } = createTestService()
72
- service.hasFocus.setValue(false)
73
- service.focusedItem.setValue(items[0])
74
-
75
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
73
+ using(service, () => {
74
+ service.hasFocus.setValue(false)
75
+ service.focusedItem.setValue(items[0])
76
76
 
77
- expect(service.focusedItem.getValue()).toBe(items[0])
77
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
78
78
 
79
- service[Symbol.dispose]()
79
+ expect(service.focusedItem.getValue()).toBe(items[0])
80
+ })
80
81
  })
81
82
 
82
83
  it('should handle ArrowDown to move focus to next item', () => {
83
84
  const { service, items } = createTestService()
84
- service.hasFocus.setValue(true)
85
- service.focusedItem.setValue(items[0])
85
+ using(service, () => {
86
+ service.hasFocus.setValue(true)
87
+ service.focusedItem.setValue(items[0])
86
88
 
87
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
89
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
88
90
 
89
- expect(service.focusedItem.getValue()).toBe(items[1])
90
-
91
- service[Symbol.dispose]()
91
+ expect(service.focusedItem.getValue()).toBe(items[1])
92
+ })
92
93
  })
93
94
 
94
95
  it('should not move past last item on ArrowDown', () => {
95
96
  const { service, items } = createTestService()
96
- service.hasFocus.setValue(true)
97
- service.focusedItem.setValue(items[2])
98
-
99
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
97
+ using(service, () => {
98
+ service.hasFocus.setValue(true)
99
+ service.focusedItem.setValue(items[2])
100
100
 
101
- expect(service.focusedItem.getValue()).toBe(items[2])
101
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowDown' }))
102
102
 
103
- service[Symbol.dispose]()
103
+ expect(service.focusedItem.getValue()).toBe(items[2])
104
+ })
104
105
  })
105
106
 
106
107
  it('should handle ArrowUp to move focus to previous item', () => {
107
108
  const { service, items } = createTestService()
108
- service.hasFocus.setValue(true)
109
- service.focusedItem.setValue(items[1])
109
+ using(service, () => {
110
+ service.hasFocus.setValue(true)
111
+ service.focusedItem.setValue(items[1])
110
112
 
111
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowUp' }))
113
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowUp' }))
112
114
 
113
- expect(service.focusedItem.getValue()).toBe(items[0])
114
-
115
- service[Symbol.dispose]()
115
+ expect(service.focusedItem.getValue()).toBe(items[0])
116
+ })
116
117
  })
117
118
 
118
119
  it('should not move past first item on ArrowUp', () => {
119
120
  const { service, items } = createTestService()
120
- service.hasFocus.setValue(true)
121
- service.focusedItem.setValue(items[0])
122
-
123
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowUp' }))
121
+ using(service, () => {
122
+ service.hasFocus.setValue(true)
123
+ service.focusedItem.setValue(items[0])
124
124
 
125
- expect(service.focusedItem.getValue()).toBe(items[0])
125
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'ArrowUp' }))
126
126
 
127
- service[Symbol.dispose]()
127
+ expect(service.focusedItem.getValue()).toBe(items[0])
128
+ })
128
129
  })
129
130
 
130
131
  it('should handle Home to move focus to first item', () => {
131
132
  const { service, items } = createTestService()
132
- service.hasFocus.setValue(true)
133
- service.focusedItem.setValue(items[2])
133
+ using(service, () => {
134
+ service.hasFocus.setValue(true)
135
+ service.focusedItem.setValue(items[2])
134
136
 
135
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Home' }))
137
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Home' }))
136
138
 
137
- expect(service.focusedItem.getValue()).toBe(items[0])
138
-
139
- service[Symbol.dispose]()
139
+ expect(service.focusedItem.getValue()).toBe(items[0])
140
+ })
140
141
  })
141
142
 
142
143
  it('should handle End to move focus to last item', () => {
143
144
  const { service, items } = createTestService()
144
- service.hasFocus.setValue(true)
145
- service.focusedItem.setValue(items[0])
146
-
147
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'End' }))
145
+ using(service, () => {
146
+ service.hasFocus.setValue(true)
147
+ service.focusedItem.setValue(items[0])
148
148
 
149
- expect(service.focusedItem.getValue()).toBe(items[2])
149
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'End' }))
150
150
 
151
- service[Symbol.dispose]()
151
+ expect(service.focusedItem.getValue()).toBe(items[2])
152
+ })
152
153
  })
153
154
 
154
155
  it('should handle Space to toggle selection of focused item', () => {
155
156
  const { service, items } = createTestService()
156
- service.hasFocus.setValue(true)
157
- service.focusedItem.setValue(items[0])
157
+ using(service, () => {
158
+ service.hasFocus.setValue(true)
159
+ service.focusedItem.setValue(items[0])
158
160
 
159
- service.handleKeyDown(new KeyboardEvent('keydown', { key: ' ' }))
160
- expect(service.selection.getValue()).toContain(items[0])
161
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: ' ' }))
162
+ expect(service.selection.getValue()).toContain(items[0])
161
163
 
162
- service.handleKeyDown(new KeyboardEvent('keydown', { key: ' ' }))
163
- expect(service.selection.getValue()).not.toContain(items[0])
164
-
165
- service[Symbol.dispose]()
164
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: ' ' }))
165
+ expect(service.selection.getValue()).not.toContain(items[0])
166
+ })
166
167
  })
167
168
 
168
169
  it('should handle + to select all items', () => {
169
170
  const { service, items } = createTestService()
170
- service.hasFocus.setValue(true)
171
-
172
- service.handleKeyDown(new KeyboardEvent('keydown', { key: '+' }))
171
+ using(service, () => {
172
+ service.hasFocus.setValue(true)
173
173
 
174
- expect(service.selection.getValue().length).toBe(3)
175
- expect(service.selection.getValue()).toEqual(items)
174
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: '+' }))
176
175
 
177
- service[Symbol.dispose]()
176
+ expect(service.selection.getValue().length).toBe(3)
177
+ expect(service.selection.getValue()).toEqual(items)
178
+ })
178
179
  })
179
180
 
180
181
  it('should handle - to deselect all items', () => {
181
182
  const { service, items } = createTestService()
182
- service.hasFocus.setValue(true)
183
- service.selection.setValue([...items])
183
+ using(service, () => {
184
+ service.hasFocus.setValue(true)
185
+ service.selection.setValue([...items])
184
186
 
185
- service.handleKeyDown(new KeyboardEvent('keydown', { key: '-' }))
187
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: '-' }))
186
188
 
187
- expect(service.selection.getValue().length).toBe(0)
188
-
189
- service[Symbol.dispose]()
189
+ expect(service.selection.getValue().length).toBe(0)
190
+ })
190
191
  })
191
192
 
192
193
  it('should handle * to invert selection', () => {
193
194
  const { service, items } = createTestService()
194
- service.hasFocus.setValue(true)
195
- service.selection.setValue([items[0]])
196
-
197
- service.handleKeyDown(new KeyboardEvent('keydown', { key: '*' }))
195
+ using(service, () => {
196
+ service.hasFocus.setValue(true)
197
+ service.selection.setValue([items[0]])
198
198
 
199
- const selection = service.selection.getValue()
200
- expect(selection).not.toContain(items[0])
201
- expect(selection).toContain(items[1])
202
- expect(selection).toContain(items[2])
199
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: '*' }))
203
200
 
204
- service[Symbol.dispose]()
201
+ const selection = service.selection.getValue()
202
+ expect(selection).not.toContain(items[0])
203
+ expect(selection).toContain(items[1])
204
+ expect(selection).toContain(items[2])
205
+ })
205
206
  })
206
207
 
207
208
  it('should handle Insert to toggle selection and move to next item', () => {
208
209
  const { service, items } = createTestService()
209
- service.hasFocus.setValue(true)
210
- service.focusedItem.setValue(items[0])
210
+ using(service, () => {
211
+ service.hasFocus.setValue(true)
212
+ service.focusedItem.setValue(items[0])
211
213
 
212
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Insert' }))
214
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Insert' }))
213
215
 
214
- expect(service.selection.getValue()).toContain(items[0])
215
- expect(service.focusedItem.getValue()).toBe(items[1])
216
-
217
- service[Symbol.dispose]()
216
+ expect(service.selection.getValue()).toContain(items[0])
217
+ expect(service.focusedItem.getValue()).toBe(items[1])
218
+ })
218
219
  })
219
220
 
220
221
  it('should handle Insert to deselect already selected item', () => {
221
222
  const { service, items } = createTestService()
222
- service.hasFocus.setValue(true)
223
- service.focusedItem.setValue(items[0])
224
- service.selection.setValue([items[0]])
225
-
226
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Insert' }))
223
+ using(service, () => {
224
+ service.hasFocus.setValue(true)
225
+ service.focusedItem.setValue(items[0])
226
+ service.selection.setValue([items[0]])
227
227
 
228
- expect(service.selection.getValue()).not.toContain(items[0])
229
- expect(service.focusedItem.getValue()).toBe(items[1])
228
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Insert' }))
230
229
 
231
- service[Symbol.dispose]()
230
+ expect(service.selection.getValue()).not.toContain(items[0])
231
+ expect(service.focusedItem.getValue()).toBe(items[1])
232
+ })
232
233
  })
233
234
 
234
235
  it('should handle Tab to toggle focus', () => {
235
236
  const { service } = createTestService()
236
- service.hasFocus.setValue(true)
237
+ using(service, () => {
238
+ service.hasFocus.setValue(true)
237
239
 
238
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Tab' }))
240
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Tab' }))
239
241
 
240
- expect(service.hasFocus.getValue()).toBe(false)
241
-
242
- service[Symbol.dispose]()
242
+ expect(service.hasFocus.getValue()).toBe(false)
243
+ })
243
244
  })
244
245
 
245
246
  it('should handle Escape to clear selection and search term', () => {
246
247
  const { service, items } = createTestService()
247
- service.hasFocus.setValue(true)
248
- service.selection.setValue([items[0], items[1]])
249
- service.searchTerm.setValue('test')
250
-
251
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Escape' }))
248
+ using(service, () => {
249
+ service.hasFocus.setValue(true)
250
+ service.selection.setValue([items[0], items[1]])
251
+ service.searchTerm.setValue('test')
252
252
 
253
- expect(service.selection.getValue()).toEqual([])
254
- expect(service.searchTerm.getValue()).toBe('')
253
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'Escape' }))
255
254
 
256
- service[Symbol.dispose]()
255
+ expect(service.selection.getValue()).toEqual([])
256
+ expect(service.searchTerm.getValue()).toBe('')
257
+ })
257
258
  })
258
259
 
259
260
  it('should handle type-ahead search when searchField is set', () => {
260
261
  const { service, items } = createTestService({ searchField: 'name' })
261
- service.hasFocus.setValue(true)
262
+ using(service, () => {
263
+ service.hasFocus.setValue(true)
262
264
 
263
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'S' }))
265
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'S' }))
264
266
 
265
- expect(service.searchTerm.getValue()).toBe('S')
266
- expect(service.focusedItem.getValue()).toBe(items[1])
267
-
268
- service[Symbol.dispose]()
267
+ expect(service.searchTerm.getValue()).toBe('S')
268
+ expect(service.focusedItem.getValue()).toBe(items[1])
269
+ })
269
270
  })
270
271
 
271
272
  it('should accumulate type-ahead search characters', () => {
272
273
  const { service, items } = createTestService({ searchField: 'name' })
273
- service.hasFocus.setValue(true)
274
-
275
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'T' }))
276
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'h' }))
277
- service.handleKeyDown(new KeyboardEvent('keydown', { key: 'i' }))
274
+ using(service, () => {
275
+ service.hasFocus.setValue(true)
278
276
 
279
- expect(service.searchTerm.getValue()).toBe('Thi')
280
- expect(service.focusedItem.getValue()).toBe(items[2])
277
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'T' }))
278
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'h' }))
279
+ service.handleKeyDown(new KeyboardEvent('keydown', { key: 'i' }))
281
280
 
282
- service[Symbol.dispose]()
281
+ expect(service.searchTerm.getValue()).toBe('Thi')
282
+ expect(service.focusedItem.getValue()).toBe(items[2])
283
+ })
283
284
  })
284
285
  })
285
286
 
286
287
  describe('handleItemClick', () => {
287
288
  it('should set focused item on click', () => {
288
289
  const { service, items } = createTestService()
290
+ using(service, () => {
291
+ service.handleItemClick(items[1], new MouseEvent('click'))
289
292
 
290
- service.handleItemClick(items[1], new MouseEvent('click'))
291
-
292
- expect(service.focusedItem.getValue()).toBe(items[1])
293
-
294
- service[Symbol.dispose]()
293
+ expect(service.focusedItem.getValue()).toBe(items[1])
294
+ })
295
295
  })
296
296
 
297
297
  it('should add to selection on Ctrl+Click', () => {
298
298
  const { service, items } = createTestService()
299
+ using(service, () => {
300
+ service.handleItemClick(items[0], new MouseEvent('click', { ctrlKey: true }))
299
301
 
300
- service.handleItemClick(items[0], new MouseEvent('click', { ctrlKey: true }))
301
-
302
- expect(service.selection.getValue()).toContain(items[0])
303
-
304
- service[Symbol.dispose]()
302
+ expect(service.selection.getValue()).toContain(items[0])
303
+ })
305
304
  })
306
305
 
307
306
  it('should remove from selection on Ctrl+Click when already selected', () => {
308
307
  const { service, items } = createTestService()
309
- service.selection.setValue([items[0]])
308
+ using(service, () => {
309
+ service.selection.setValue([items[0]])
310
310
 
311
- service.handleItemClick(items[0], new MouseEvent('click', { ctrlKey: true }))
311
+ service.handleItemClick(items[0], new MouseEvent('click', { ctrlKey: true }))
312
312
 
313
- expect(service.selection.getValue()).not.toContain(items[0])
314
-
315
- service[Symbol.dispose]()
313
+ expect(service.selection.getValue()).not.toContain(items[0])
314
+ })
316
315
  })
317
316
 
318
317
  it('should select range on Shift+Click', () => {
319
318
  const { service, items } = createTestService()
320
- service.focusedItem.setValue(items[0])
321
-
322
- service.handleItemClick(items[2], new MouseEvent('click', { shiftKey: true }))
319
+ using(service, () => {
320
+ service.focusedItem.setValue(items[0])
323
321
 
324
- const selection = service.selection.getValue()
325
- expect(selection).toContain(items[0])
326
- expect(selection).toContain(items[1])
327
- expect(selection).toContain(items[2])
322
+ service.handleItemClick(items[2], new MouseEvent('click', { shiftKey: true }))
328
323
 
329
- service[Symbol.dispose]()
324
+ const selection = service.selection.getValue()
325
+ expect(selection).toContain(items[0])
326
+ expect(selection).toContain(items[1])
327
+ expect(selection).toContain(items[2])
328
+ })
330
329
  })
331
330
 
332
331
  it('should select range backwards on Shift+Click', () => {
333
332
  const { service, items } = createTestService()
334
- service.focusedItem.setValue(items[2])
333
+ using(service, () => {
334
+ service.focusedItem.setValue(items[2])
335
335
 
336
- service.handleItemClick(items[0], new MouseEvent('click', { shiftKey: true }))
336
+ service.handleItemClick(items[0], new MouseEvent('click', { shiftKey: true }))
337
337
 
338
- const selection = service.selection.getValue()
339
- expect(selection).toContain(items[0])
340
- expect(selection).toContain(items[1])
341
- expect(selection).toContain(items[2])
342
-
343
- service[Symbol.dispose]()
338
+ const selection = service.selection.getValue()
339
+ expect(selection).toContain(items[0])
340
+ expect(selection).toContain(items[1])
341
+ expect(selection).toContain(items[2])
342
+ })
344
343
  })
345
344
  })
346
345
 
347
346
  describe('handleItemDoubleClick', () => {
348
347
  it('should not throw on double-click', () => {
349
348
  const { service, items } = createTestService()
350
-
351
- expect(() => service.handleItemDoubleClick(items[0])).not.toThrow()
352
-
353
- service[Symbol.dispose]()
349
+ using(service, () => {
350
+ expect(() => service.handleItemDoubleClick(items[0])).not.toThrow()
351
+ })
354
352
  })
355
353
  })
356
354