Skip to content

Commit

Permalink
Make preferences reducer deterministic
Browse files Browse the repository at this point in the history
Remove Date.now() from the preferences reducer, making it a pure
function.
  • Loading branch information
noisysocks committed Mar 6, 2018
1 parent d459ee9 commit e4f1c1b
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 30 deletions.
2 changes: 2 additions & 0 deletions editor/store/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ export function replaceBlocks( uids, blocks ) {
type: 'REPLACE_BLOCKS',
uids: castArray( uids ),
blocks: castArray( blocks ),
time: Date.now(),
};
}

Expand Down Expand Up @@ -213,6 +214,7 @@ export function insertBlocks( blocks, index, rootUID ) {
blocks: castArray( blocks ),
index,
rootUID,
time: Date.now(),
};
}

Expand Down
2 changes: 1 addition & 1 deletion editor/store/reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ export function preferences( state = PREFERENCES_DEFAULTS, action ) {
insertUsage: {
...prevState.insertUsage,
[ id ]: {
time: Date.now(),
time: action.time,
count: prevState.insertUsage[ id ] ? prevState.insertUsage[ id ].count + 1 : 1,
insert,
},
Expand Down
10 changes: 8 additions & 2 deletions editor/store/test/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ describe( 'actions', () => {
type: 'REPLACE_BLOCKS',
uids: [ 'chicken' ],
blocks: [ block ],
time: expect.any( Number ),
} );
} );
} );
Expand All @@ -177,6 +178,7 @@ describe( 'actions', () => {
type: 'REPLACE_BLOCKS',
uids: [ 'chicken' ],
blocks,
time: expect.any( Number ),
} );
} );
} );
Expand All @@ -187,10 +189,12 @@ describe( 'actions', () => {
uid: 'ribs',
};
const index = 5;
expect( insertBlock( block, index ) ).toEqual( {
expect( insertBlock( block, index, 'test_uid' ) ).toEqual( {
type: 'INSERT_BLOCKS',
blocks: [ block ],
index,
rootUID: 'test_uid',
time: expect.any( Number ),
} );
} );
} );
Expand All @@ -201,10 +205,12 @@ describe( 'actions', () => {
uid: 'ribs',
} ];
const index = 3;
expect( insertBlocks( blocks, index ) ).toEqual( {
expect( insertBlocks( blocks, index, 'test_uid' ) ).toEqual( {
type: 'INSERT_BLOCKS',
blocks,
index,
rootUID: 'test_uid',
time: expect.any( Number ),
} );
} );
} );
Expand Down
55 changes: 32 additions & 23 deletions editor/store/test/effects.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
setupEditorState,
resetBlocks,
mergeBlocks,
replaceBlocks,
savePost,
updateReusableBlock,
saveReusableBlock,
Expand Down Expand Up @@ -106,11 +105,16 @@ describe( 'effects', () => {

expect( dispatch ).toHaveBeenCalledTimes( 2 );
expect( dispatch ).toHaveBeenCalledWith( selectBlock( 'chicken', -1 ) );
expect( dispatch ).toHaveBeenCalledWith( replaceBlocks( [ 'chicken', 'ribs' ], [ {
uid: 'chicken',
name: 'core/test-block',
attributes: { content: 'chicken ribs' },
} ] ) );
expect( dispatch ).toHaveBeenCalledWith( {
type: 'REPLACE_BLOCKS',
uids: [ 'chicken', 'ribs' ],
blocks: [ {
uid: 'chicken',
name: 'core/test-block',
attributes: { content: 'chicken ribs' },
} ],
time: expect.any( Number ),
} );
} );

it( 'should not merge the blocks have different types without transformation', () => {
Expand Down Expand Up @@ -201,11 +205,16 @@ describe( 'effects', () => {

expect( dispatch ).toHaveBeenCalledTimes( 2 );
// expect( dispatch ).toHaveBeenCalledWith( focusBlock( 'chicken', { offset: -1 } ) );
expect( dispatch ).toHaveBeenCalledWith( replaceBlocks( [ 'chicken', 'ribs' ], [ {
uid: 'chicken',
name: 'core/test-block',
attributes: { content: 'chicken ribs' },
} ] ) );
expect( dispatch ).toHaveBeenCalledWith( {
type: 'REPLACE_BLOCKS',
uids: [ 'chicken', 'ribs' ],
blocks: [ {
uid: 'chicken',
name: 'core/test-block',
attributes: { content: 'chicken ribs' },
} ],
time: expect.any( Number ),
} );
} );
} );

Expand Down Expand Up @@ -743,12 +752,12 @@ describe( 'effects', () => {

handler( convertBlockToStatic( staticBlock.uid ), store );

expect( dispatch ).toHaveBeenCalledWith(
replaceBlocks(
[ staticBlock.uid ],
createBlock( reusableBlock.type, reusableBlock.attributes )
)
);
expect( dispatch ).toHaveBeenCalledWith( {
type: 'REPLACE_BLOCKS',
uids: [ staticBlock.uid ],
blocks: [ createBlock( reusableBlock.type, reusableBlock.attributes ) ],
time: expect.any( Number ),
} );
} );
} );

Expand Down Expand Up @@ -780,12 +789,12 @@ describe( 'effects', () => {
expect( dispatch ).toHaveBeenCalledWith(
saveReusableBlock( expect.any( Number ) )
);
expect( dispatch ).toHaveBeenCalledWith(
replaceBlocks(
[ staticBlock.uid ],
[ createBlock( 'core/block', { ref: expect.any( Number ) } ) ]
)
);
expect( dispatch ).toHaveBeenCalledWith( {
type: 'REPLACE_BLOCKS',
uids: [ staticBlock.uid ],
blocks: [ createBlock( 'core/block', { ref: expect.any( Number ) } ) ],
time: expect.any( Number ),
} );
} );
} );
} );
Expand Down
10 changes: 6 additions & 4 deletions editor/store/test/reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -1207,12 +1207,13 @@ describe( 'state', () => {
uid: 'bacon',
name: 'core-embed/twitter',
} ],
time: 123456,
} );

expect( state ).toEqual( {
insertUsage: {
'core-embed/twitter': {
time: expect.any( Number ),
time: 123456,
count: 1,
insert: { name: 'core-embed/twitter' },
},
Expand All @@ -1222,7 +1223,7 @@ describe( 'state', () => {
const twoRecentBlocks = preferences( deepFreeze( {
insertUsage: {
'core-embed/twitter': {
time: expect.any( Number ),
time: 123456,
count: 1,
insert: { name: 'core-embed/twitter' },
},
Expand All @@ -1237,17 +1238,18 @@ describe( 'state', () => {
name: 'core/block',
attributes: { ref: 123 },
} ],
time: 123457,
} );

expect( twoRecentBlocks ).toEqual( {
insertUsage: {
'core-embed/twitter': {
time: expect.any( Number ),
time: 123457,
count: 2,
insert: { name: 'core-embed/twitter' },
},
'core/block/123': {
time: expect.any( Number ),
time: 123457,
count: 1,
insert: { name: 'core/block', ref: 123 },
},
Expand Down

0 comments on commit e4f1c1b

Please sign in to comment.