@@ -364,6 +364,45 @@ test('undo / redo', () => {
364364 expect ( state . G ) . toMatchObject ( { roll : 4 } ) ;
365365} ) ;
366366
367+ test ( 'disable undo / redo' , ( ) => {
368+ const game : Game = {
369+ seed : 0 ,
370+ disableUndo : true ,
371+ moves : {
372+ move : ( G , ctx , arg ) => ( { ...G , [ arg ] : true } ) ,
373+ } ,
374+ } ;
375+
376+ const reducer = CreateGameReducer ( { game } ) ;
377+
378+ let state = InitializeGame ( { game } ) ;
379+
380+ state = reducer ( state , makeMove ( 'move' , 'A' ) ) ;
381+ expect ( state . G ) . toMatchObject ( { A : true } ) ;
382+ expect ( state . _undo ) . toEqual ( [ ] ) ;
383+ expect ( state . _redo ) . toEqual ( [ ] ) ;
384+
385+ state = reducer ( state , makeMove ( 'move' , 'B' ) ) ;
386+ expect ( state . G ) . toMatchObject ( { A : true , B : true } ) ;
387+ expect ( state . _undo ) . toEqual ( [ ] ) ;
388+ expect ( state . _redo ) . toEqual ( [ ] ) ;
389+
390+ state = reducer ( state , undo ( ) ) ;
391+ expect ( state . G ) . toMatchObject ( { A : true , B : true } ) ;
392+ expect ( state . _undo ) . toEqual ( [ ] ) ;
393+ expect ( state . _redo ) . toEqual ( [ ] ) ;
394+
395+ state = reducer ( state , undo ( ) ) ;
396+ expect ( state . G ) . toMatchObject ( { A : true , B : true } ) ;
397+ expect ( state . _undo ) . toEqual ( [ ] ) ;
398+ expect ( state . _redo ) . toEqual ( [ ] ) ;
399+
400+ state = reducer ( state , redo ( ) ) ;
401+ expect ( state . G ) . toMatchObject ( { A : true , B : true } ) ;
402+ expect ( state . _undo ) . toEqual ( [ ] ) ;
403+ expect ( state . _redo ) . toEqual ( [ ] ) ;
404+ } ) ;
405+
367406describe ( 'undo stack' , ( ) => {
368407 const game : Game = {
369408 moves : {
0 commit comments