mediawiki-extensions-Popups/tests/node-qunit/previewBehavior.test.js
Stephen Niedzielski 007cc5ab7c Hygiene: favor string templates over concatenation
Update the ESLint config to favor ES6 strings where variables or string
concatenation is used and fix *all* offenders automatically via:

  eslint \
    --cache \
    --max-warnings 0 \
    --report-unused-disable-directives \
    --fix \
    src tests

Change-Id: I1a9345162348e5ded21d541e7a2ce251ea72ab5a
2018-03-21 08:05:55 -05:00

94 lines
2.7 KiB
JavaScript

import createPreviewBehavior from '../../src/previewBehavior';
import { createStubUser } from './stubs';
QUnit.module( 'ext.popups.preview.settingsBehavior', {
beforeEach() {
function newFromText( title ) {
return { getUrl() { return `url/${ title }`; } };
}
mediaWiki.Title = { newFromText };
/* global Map */ this.config = new Map();
},
afterEach() {
mediaWiki.Title = null;
}
} );
QUnit.test( 'it should set the settingsUrl on wgPopupsBetaFeature', function ( assert ) {
const user = createStubUser( /* isAnon = */ false ),
actions = {};
const cases = [
[ true, 'Special:Preferences#mw-prefsection-betafeatures' ],
[ false, 'Special:Preferences#mw-prefsection-rendering' ]
];
cases.forEach( ( testCase ) => {
this.config.set( 'wgPopupsBetaFeature', testCase[ 0 ] );
const behavior = createPreviewBehavior( this.config, user, actions );
assert.deepEqual(
behavior.settingsUrl,
`url/${ testCase[ 1 ] }`
);
} );
} );
QUnit.test( 'it shouldn\'t set the settingsUrl if the user is logged out', function ( assert ) {
const user = createStubUser( /* isAnon = */ true ),
actions = {},
behavior = createPreviewBehavior( this.config, user, actions );
assert.strictEqual( behavior.settingsUrl, undefined );
} );
QUnit.test( 'it shouldn\'t set a showSettings handler if the user is logged in', function ( assert ) {
const user = createStubUser( /* isAnon = */ false ),
actions = {},
behavior = createPreviewBehavior( this.config, user, actions );
assert.strictEqual( behavior.showSettings, $.noop );
} );
QUnit.test( 'it should set a showSettings handler if the user is logged out', function ( assert ) {
const user = createStubUser( /* isAnon = */ true ),
event = {
preventDefault: this.sandbox.spy()
},
actions = {
showSettings: this.sandbox.spy()
},
behavior = createPreviewBehavior( this.config, user, actions );
behavior.showSettings( event );
assert.ok(
event.preventDefault.called,
'It should prevent the default action of the event.'
);
assert.ok(
actions.showSettings.called,
'It should dispatch the SETTINGS_SHOW action.'
);
} );
QUnit.test( 'it should mix in default actions', function ( assert ) {
const user = createStubUser( /* isAnon = */ true ),
actions = {};
actions.previewDwell = () => {};
actions.abandon = () => {};
actions.previewShow = () => {};
actions.linkClick = () => {};
const behavior = createPreviewBehavior( this.config, user, actions );
assert.strictEqual( behavior.previewDwell, actions.previewDwell );
assert.strictEqual( behavior.previewAbandon, actions.abandon );
assert.strictEqual( behavior.previewShow, actions.previewShow );
assert.strictEqual( behavior.click, actions.linkClick );
} );