mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-11-24 15:44:09 +00:00
Merge "Test: Migrate isEnabled.test.js to node-qunit"
This commit is contained in:
commit
0971543bde
68
tests/node-qunit/isEnabled.test.js
Normal file
68
tests/node-qunit/isEnabled.test.js
Normal file
|
@ -0,0 +1,68 @@
|
|||
/* global Map: false */
|
||||
|
||||
var stubs = require( './stubs' ),
|
||||
isEnabled = require( '../../src/isEnabled' );
|
||||
|
||||
function createStubUserSettings( isEnabled ) {
|
||||
return {
|
||||
hasIsEnabled: function () {
|
||||
return isEnabled !== undefined;
|
||||
},
|
||||
getIsEnabled: function () {
|
||||
return Boolean( isEnabled );
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
QUnit.module( 'ext.popups#isEnabled (logged out)', {
|
||||
setup: function () {
|
||||
this.user = stubs.createStubUser( /* isAnon = */ true );
|
||||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'is should handle logged out users', function ( assert ) {
|
||||
var user = stubs.createStubUser( /* isAnon = */ true ),
|
||||
cases,
|
||||
i, testCase,
|
||||
userSettings,
|
||||
config = new Map();
|
||||
|
||||
cases = [
|
||||
[ undefined, true, 'When the user hasn\'t enabled or disabled the feature' ],
|
||||
[ false, false, 'When the user has disabled the feature' ],
|
||||
[ true, true, 'When the user has enabled the feature' ]
|
||||
];
|
||||
|
||||
for ( i = 0; i < cases.length; i++ ) {
|
||||
testCase = cases[ i ];
|
||||
userSettings = createStubUserSettings( testCase[ 0 ] );
|
||||
|
||||
assert.equal(
|
||||
isEnabled( user, userSettings, config ),
|
||||
testCase[ 1 ],
|
||||
testCase[ 2 ]
|
||||
);
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
config.set( 'wgPopupsBetaFeature', true );
|
||||
|
||||
assert.notOk(
|
||||
isEnabled( user, userSettings, config ),
|
||||
'When Page Previews is enabled as a beta feature, then it\'s not enabled for logged out users.'
|
||||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should handle logged in users', function ( assert ) {
|
||||
var user = stubs.createStubUser( /* isAnon = */ false ),
|
||||
userSettings = createStubUserSettings( false ),
|
||||
config = new Map();
|
||||
|
||||
config.set( 'wgPopupsShouldSendModuleToUser', true );
|
||||
|
||||
assert.ok(
|
||||
isEnabled( user, userSettings, config ),
|
||||
'If the user is logged in and Page Previews has booted, then it\'s enabled.'
|
||||
);
|
||||
} );
|
17
tests/node-qunit/stubs.js
Normal file
17
tests/node-qunit/stubs.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* Creates a **minimal** stub that can be used in place of an `mw.User`
|
||||
* instance.
|
||||
*
|
||||
* @param {boolean} isAnon The return value of the `#isAnon`.
|
||||
* @return {Object}
|
||||
*/
|
||||
exports.createStubUser = function createStubUser( isAnon ) {
|
||||
return {
|
||||
isAnon: function () {
|
||||
return isAnon;
|
||||
},
|
||||
sessionId: function () {
|
||||
return '0123456789';
|
||||
}
|
||||
};
|
||||
};
|
|
@ -1,65 +0,0 @@
|
|||
( function ( mw ) {
|
||||
|
||||
function createStubUserSettings( isEnabled ) {
|
||||
return {
|
||||
hasIsEnabled: function () {
|
||||
return isEnabled !== undefined;
|
||||
},
|
||||
getIsEnabled: function () {
|
||||
return Boolean(isEnabled);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
QUnit.module( 'ext.popups#isEnabled (logged out)', {
|
||||
setup: function () {
|
||||
this.user = mw.popups.tests.stubs.createStubUser( /* isAnon = */ true );
|
||||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'is should handle logged out users', function ( assert ) {
|
||||
var user = mw.popups.tests.stubs.createStubUser( /* isAnon = */ true ),
|
||||
cases,
|
||||
userSettings,
|
||||
config = new mw.Map();
|
||||
|
||||
cases = [
|
||||
[ undefined, true, 'When the user hasn\'t enabled or disabled the feature' ],
|
||||
[ false, false, 'When the user has disabled the feature' ],
|
||||
[ true, true, 'When the user has enabled the feature' ]
|
||||
];
|
||||
|
||||
$.each( cases, function ( _, testCase ) {
|
||||
userSettings = createStubUserSettings( testCase[ 0 ] );
|
||||
|
||||
assert.equal(
|
||||
mw.popups.isEnabled( user, userSettings, config ),
|
||||
testCase[ 1 ],
|
||||
testCase[ 2 ]
|
||||
);
|
||||
} );
|
||||
|
||||
// ---
|
||||
|
||||
config.set( 'wgPopupsBetaFeature', true );
|
||||
|
||||
assert.notOk(
|
||||
mw.popups.isEnabled( user, userSettings, config ),
|
||||
'When Page Previews is enabled as a beta feature, then it\'s not enabled for logged out users.'
|
||||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should handle logged in users', function ( assert ) {
|
||||
var user = mw.popups.tests.stubs.createStubUser( /* isAnon = */ false ),
|
||||
userSettings = createStubUserSettings( false ),
|
||||
config = new mw.Map();
|
||||
|
||||
config.set( 'wgPopupsShouldSendModuleToUser', true );
|
||||
|
||||
assert.ok(
|
||||
mw.popups.isEnabled( user, userSettings, config ),
|
||||
'If the user is logged in and Page Previews has booted, then it\'s enabled.'
|
||||
);
|
||||
} );
|
||||
|
||||
}( mediaWiki ) );
|
Loading…
Reference in a new issue