mediawiki-extensions-Popups/tests/node-qunit/reducers/settings.test.js
joakin 33c05394f4 Set up qunit running in node to migrate tests to commonjs
In order to run qunit tests on sources that use common.js modules, set
up infra to run qunit tests in the node cli when running:

    npm run test:node

Changes:
* Add npm script test:node that runs the tests
* Run node tests on CI (npm test)
* Add a qunit node test runner: mw-node-qunit
* Migrate a test from the root hierarchy and another one from the nested
  one to prove it works (globs fail otherwise)
  * reducers/settings.test.js to node qunit to prove it works
  * counts.test.js to node qunit to prove it works

Change-Id: I55d76b7db168f3745e0ac69852c152322ab385c3
2017-02-20 20:01:01 +01:00

115 lines
2.3 KiB
JavaScript

var settings = require( '../../../src/reducers/settings' );
QUnit.module( 'reducers/settings' );
QUnit.test( '@@INIT', function ( assert ) {
var state = settings( undefined, { type: '@@INIT' } );
assert.deepEqual(
state,
{
shouldShow: false,
showHelp: false,
shouldShowFooterLink: false
}
);
} );
QUnit.test( 'BOOT', function ( assert ) {
var action = {
type: 'BOOT',
isEnabled: false,
user: {
isAnon: true
}
};
assert.deepEqual(
settings( {}, action ),
{
shouldShowFooterLink: true
}
);
// ---
// And when the user is logged out...
action.user.isAnon = false;
assert.deepEqual(
settings( {}, action ),
{
shouldShowFooterLink: false
},
'If the user is logged in, then it doesn\'t signal that the footer link should be shown.'
);
} );
QUnit.test( 'SETTINGS_SHOW', function ( assert ) {
assert.expect( 1 );
assert.deepEqual(
settings( {}, { type: 'SETTINGS_SHOW' } ),
{
shouldShow: true,
showHelp: false
},
'It should mark the settings dialog as ready to be shown, with no help.'
);
} );
QUnit.test( 'SETTINGS_HIDE', function ( assert ) {
assert.expect( 1 );
assert.deepEqual(
settings( {}, { type: 'SETTINGS_HIDE' } ),
{
shouldShow: false,
showHelp: false
},
'It should mark the settings dialog as ready to be closed, and hide help.'
);
} );
QUnit.test( 'SETTINGS_CHANGE', function ( assert ) {
var action = function ( wasEnabled, enabled ) {
return {
type: 'SETTINGS_CHANGE',
wasEnabled: wasEnabled,
enabled: enabled
};
};
assert.deepEqual(
settings( {}, action( false, false ) ),
{ shouldShow: false },
'It should just hide the settings dialog when enabled state stays the same.'
);
assert.deepEqual(
settings( {}, action( true, true ) ),
{ shouldShow: false },
'It should just hide the settings dialog when enabled state stays the same.'
);
assert.deepEqual(
settings( {}, action( false, true ) ),
{
shouldShow: false,
showHelp: false,
shouldShowFooterLink: false
},
'It should hide the settings dialog and help when we enable.'
);
assert.deepEqual(
settings( {}, action( true, false ) ),
{
shouldShow: true,
showHelp: true,
shouldShowFooterLink: true
},
'It should keep the settings showing and show the help when we disable.'
);
} );