mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-12-02 19:26:24 +00:00
62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
|
import nextState from '../../../src/reducers/nextState';
|
||
|
|
||
|
QUnit.module( 'reducers/nextState' );
|
||
|
|
||
|
QUnit.test( 'with scalar values', ( assert ) => {
|
||
|
const tests = [
|
||
|
{
|
||
|
before: {},
|
||
|
updates: {},
|
||
|
after: {}
|
||
|
},
|
||
|
{
|
||
|
before: { unchanged: true, changed: false },
|
||
|
updates: { new: true, changed: true },
|
||
|
after: { unchanged: true, changed: true, new: true }
|
||
|
},
|
||
|
{
|
||
|
before: { a: { b: { unchanged: true, changed: false } } },
|
||
|
updates: { a: { b: { new: true, changed: true } } },
|
||
|
after: { a: { b: { unchanged: true, changed: true, new: true } } }
|
||
|
}
|
||
|
];
|
||
|
for ( const i in tests ) {
|
||
|
const test = tests[ i ];
|
||
|
assert.deepEqual(
|
||
|
nextState( test.before, test.updates ),
|
||
|
test.after,
|
||
|
'Test case #' + i
|
||
|
);
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
QUnit.test( 'original state object should not change', ( assert ) => {
|
||
|
const state = {},
|
||
|
after = nextState( state, { changed: true } );
|
||
|
assert.deepEqual(
|
||
|
state,
|
||
|
{},
|
||
|
'original state is unchanged'
|
||
|
);
|
||
|
assert.deepEqual(
|
||
|
after,
|
||
|
{ changed: true },
|
||
|
'new state is different'
|
||
|
);
|
||
|
} );
|
||
|
|
||
|
QUnit.test( 'Element instances should not be cloned', ( assert ) => {
|
||
|
const element = document.createElement( 'a' ),
|
||
|
newElement = document.createElement( 'b' ),
|
||
|
state = { element },
|
||
|
after = nextState( state, { element: newElement } );
|
||
|
assert.ok(
|
||
|
state.element === element,
|
||
|
'original state is unchanged'
|
||
|
);
|
||
|
assert.ok(
|
||
|
after.element === newElement,
|
||
|
'Element instance was not cloned'
|
||
|
);
|
||
|
} );
|