@@ -36,7 +36,7 @@ import { RediContext } from '@univerjs/ui';
3636import { act , createRef } from 'react' ;
3737import { createRoot } from 'react-dom/client' ;
3838import { Subject } from 'rxjs' ;
39- import { afterEach , beforeEach , describe , expect , it } from 'vitest' ;
39+ import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest' ;
4040import { GlobalRangeSelectorService } from '../../../services/range-selector.service' ;
4141import { GlobalRangeSelector } from '../Global' ;
4242import { RangeSelector } from '../index' ;
@@ -275,6 +275,60 @@ describe('GlobalRangeSelector', () => {
275275 ] ) ;
276276 } ) ;
277277
278+ it ( 'applies maxRangeCount to the global selector dialog' , async ( ) => {
279+ const { injector, service } = createGlobalRangeSelectorTestBed ( ) ;
280+
281+ await act ( async ( ) => {
282+ root . render (
283+ < RediContext . Provider value = { { injector } } >
284+ < GlobalRangeSelector />
285+ </ RediContext . Provider >
286+ ) ;
287+ await Promise . resolve ( ) ;
288+ } ) ;
289+
290+ await act ( async ( ) => {
291+ service . showRangeSelectorDialog ( {
292+ unitId : 'book-1' ,
293+ subUnitId : 'sheet-1' ,
294+ maxRangeCount : 1 ,
295+ callback : vi . fn ( ) ,
296+ } ) ;
297+ await Promise . resolve ( ) ;
298+ } ) ;
299+
300+ expect ( document . body . textContent ) . not . toContain ( 'Add range' ) ;
301+ } ) ;
302+
303+ it ( 'calls the callback with an empty range when the global selector dialog is cancelled' , async ( ) => {
304+ const { injector, service } = createGlobalRangeSelectorTestBed ( ) ;
305+ const callback = vi . fn ( ) ;
306+
307+ await act ( async ( ) => {
308+ root . render (
309+ < RediContext . Provider value = { { injector } } >
310+ < GlobalRangeSelector />
311+ </ RediContext . Provider >
312+ ) ;
313+ await Promise . resolve ( ) ;
314+ } ) ;
315+
316+ let promise ! : Promise < IUnitRangeName [ ] > ;
317+ await act ( async ( ) => {
318+ promise = service . showRangeSelectorDialog ( {
319+ unitId : 'book-1' ,
320+ subUnitId : 'sheet-1' ,
321+ callback,
322+ } ) ;
323+ await Promise . resolve ( ) ;
324+ } ) ;
325+
326+ await clickButton ( 'Cancel' ) ;
327+
328+ expect ( callback ) . toHaveBeenCalledWith ( [ ] ) ;
329+ await expect ( promise ) . resolves . toEqual ( [ ] ) ;
330+ } ) ;
331+
278332 it ( 'restores the caller selection when a range selector dialog is cancelled' , async ( ) => {
279333 const { commandService, injector } = createGlobalRangeSelectorTestBed ( ) ;
280334 const selectorRef = createRef < IRangeSelectorInstance | null > ( ) ;
0 commit comments