55 Action ,
66 Store
77} from 'redux'
8+ import { vi } from 'vitest'
89import {
910 addTodo ,
1011 dispatchInMiddle ,
@@ -205,8 +206,8 @@ describe('createStore', () => {
205206
206207 it ( 'supports multiple subscriptions' , ( ) => {
207208 const store = createStore ( reducers . todos )
208- const listenerA = jest . fn ( )
209- const listenerB = jest . fn ( )
209+ const listenerA = vi . fn ( )
210+ const listenerB = vi . fn ( )
210211
211212 let unsubscribeA = store . subscribe ( listenerA )
212213 store . dispatch ( unknownAction ( ) )
@@ -252,8 +253,8 @@ describe('createStore', () => {
252253
253254 it ( 'only removes listener once when unsubscribe is called' , ( ) => {
254255 const store = createStore ( reducers . todos )
255- const listenerA = jest . fn ( )
256- const listenerB = jest . fn ( )
256+ const listenerA = vi . fn ( )
257+ const listenerB = vi . fn ( )
257258
258259 const unsubscribeA = store . subscribe ( listenerA )
259260 store . subscribe ( listenerB )
@@ -268,7 +269,7 @@ describe('createStore', () => {
268269
269270 it ( 'only removes relevant listener when unsubscribe is called' , ( ) => {
270271 const store = createStore ( reducers . todos )
271- const listener = jest . fn ( )
272+ const listener = vi . fn ( )
272273
273274 store . subscribe ( listener )
274275 const unsubscribeSecond = store . subscribe ( listener )
@@ -282,9 +283,9 @@ describe('createStore', () => {
282283
283284 it ( 'supports removing a subscription within a subscription' , ( ) => {
284285 const store = createStore ( reducers . todos )
285- const listenerA = jest . fn ( )
286- const listenerB = jest . fn ( )
287- const listenerC = jest . fn ( )
286+ const listenerA = vi . fn ( )
287+ const listenerB = vi . fn ( )
288+ const listenerC = vi . fn ( )
288289
289290 store . subscribe ( listenerA )
290291 const unSubB = store . subscribe ( ( ) => {
@@ -308,9 +309,9 @@ describe('createStore', () => {
308309 const doUnsubscribeAll = ( ) =>
309310 unsubscribeHandles . forEach ( unsubscribe => unsubscribe ( ) )
310311
311- const listener1 = jest . fn ( )
312- const listener2 = jest . fn ( )
313- const listener3 = jest . fn ( )
312+ const listener1 = vi . fn ( )
313+ const listener2 = vi . fn ( )
314+ const listener3 = vi . fn ( )
314315
315316 unsubscribeHandles . push ( store . subscribe ( ( ) => listener1 ( ) ) )
316317 unsubscribeHandles . push (
@@ -335,9 +336,9 @@ describe('createStore', () => {
335336 it ( 'notifies only subscribers active at the moment of current dispatch' , ( ) => {
336337 const store = createStore ( reducers . todos )
337338
338- const listener1 = jest . fn ( )
339- const listener2 = jest . fn ( )
340- const listener3 = jest . fn ( )
339+ const listener1 = vi . fn ( )
340+ const listener2 = vi . fn ( )
341+ const listener3 = vi . fn ( )
341342
342343 let listener3Added = false
343344 const maybeAddThirdListener = ( ) => {
@@ -367,10 +368,10 @@ describe('createStore', () => {
367368 it ( 'uses the last snapshot of subscribers during nested dispatch' , ( ) => {
368369 const store = createStore ( reducers . todos )
369370
370- const listener1 = jest . fn ( )
371- const listener2 = jest . fn ( )
372- const listener3 = jest . fn ( )
373- const listener4 = jest . fn ( )
371+ const listener1 = vi . fn ( )
372+ const listener2 = vi . fn ( )
373+ const listener3 = vi . fn ( )
374+ const listener4 = vi . fn ( )
374375
375376 let unsubscribe4 : any
376377 const unsubscribe1 = store . subscribe ( ( ) => {
@@ -406,27 +407,41 @@ describe('createStore', () => {
406407 expect ( listener4 . mock . calls . length ) . toBe ( 1 )
407408 } )
408409
409- it ( 'provides an up-to-date state when a subscriber is notified' , done => {
410+ it ( 'provides an up-to-date state when a subscriber is notified' , async ( ) => {
410411 const store = createStore ( reducers . todos )
412+
413+ let resolve : ( value : unknown ) => void = ( ) => { }
414+ let promise = new Promise ( _resolve => {
415+ resolve = _resolve
416+ } )
411417 store . subscribe ( ( ) => {
412- expect ( store . getState ( ) ) . toEqual ( [
413- {
414- id : 1 ,
415- text : 'Hello'
416- }
417- ] )
418- done ( )
418+ resolve ( store . getState ( ) )
419419 } )
420420 store . dispatch ( addTodo ( 'Hello' ) )
421+ const state = await promise
422+
423+ expect ( state ) . toEqual ( [
424+ {
425+ id : 1 ,
426+ text : 'Hello'
427+ }
428+ ] )
421429 } )
422430
423- it ( 'does not leak private listeners array' , done => {
431+ it ( 'does not leak private listeners array' , async ( ) => {
424432 const store = createStore ( reducers . todos )
433+ let resolve : ( value : unknown ) => void = ( ) => { }
434+ let promise = new Promise ( _resolve => {
435+ resolve = _resolve
436+ } )
437+
425438 store . subscribe ( function ( this : any ) {
426- expect ( this ) . toBe ( undefined )
427- done ( )
439+ resolve ( this )
428440 } )
429441 store . dispatch ( addTodo ( 'Hello' ) )
442+ const result = await promise
443+
444+ expect ( result ) . toBe ( undefined )
430445 } )
431446
432447 it ( 'only accepts plain object actions' , ( ) => {
@@ -575,7 +590,7 @@ describe('createStore', () => {
575590 const vanillaStore = vanillaCreateStore ( ...args )
576591 return {
577592 ...vanillaStore ,
578- dispatch : jest . fn ( vanillaStore . dispatch )
593+ dispatch : vi . fn ( vanillaStore . dispatch )
579594 }
580595 }
581596
@@ -601,7 +616,7 @@ describe('createStore', () => {
601616 const vanillaStore = vanillaCreateStore ( ...args )
602617 return {
603618 ...vanillaStore ,
604- dispatch : jest . fn ( vanillaStore . dispatch )
619+ dispatch : vi . fn ( vanillaStore . dispatch )
605620 }
606621 }
607622
@@ -827,7 +842,7 @@ describe('createStore', () => {
827842
828843 it ( 'does not log an error if parts of the current state will be ignored by a nextReducer using combineReducers' , ( ) => {
829844 const originalConsoleError = console . error
830- console . error = jest . fn ( )
845+ console . error = vi . fn ( )
831846
832847 const store = createStore (
833848 combineReducers < { x ?: number ; y : { z : number ; w ?: number } } > ( {
0 commit comments