Page MenuHomeWickedGov Phorge

CtaDrawer.test.js
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

CtaDrawer.test.js

const
// Imports
dom = require( '../utils/dom' ),
jQuery = require( '../utils/jQuery' ),
mw = require( '../utils/mw' ),
mustache = require( '../utils/mustache' ),
oo = require( '../utils/oo' ),
sinon = require( 'sinon' );
let
CtaDrawer,
Anchor,
Button,
sandbox;
QUnit.module( 'MobileFrontend CtaDrawer.js', {
beforeEach: function () {
sandbox = sinon.sandbox.create();
// Set up required by all Views.
dom.setUp( sandbox, global );
jQuery.setUp( sandbox, global );
oo.setUp( sandbox, global );
// Additional CtaDrawer global dependency.
mw.setUp( sandbox, global );
mustache.setUp( sandbox, global );
// Force consistent messaging between Special:JavaScriptTest and Node.js.
sandbox.stub( global.mw, 'msg' ).callsFake( function ( id ) {
switch ( id ) {
case 'mobile-frontend-watchlist-cta-button-login': return 'Log in';
case 'mobile-frontend-watchlist-cta-button-signup': return 'Sign up';
}
return id;
} );
sandbox.stub( global.mw.util, 'getUrl' ).callsFake( function ( pageName, params ) {
return params.type ? 'signUp' : 'logIn';
} );
// Dynamically import Views to use fresh sandboxed dependencies.
Anchor = require( '../../../src/mobile.startup/Anchor' );
Button = require( '../../../src/mobile.startup/Button' );
CtaDrawer = require( '../../../src/mobile.startup/CtaDrawer' );
},
afterEach: function () {
CtaDrawer = undefined;
Button = undefined;
Anchor = undefined;
jQuery.tearDown();
sandbox.restore();
}
}, function () {
QUnit.module( 'redirectParams()', function () {
QUnit.test( 'empty props, default URL', function ( assert ) {
const subject = CtaDrawer.prototype.test.redirectParams;
sandbox.stub( global.mw.config, 'get' ).callsFake( function () {
return 'pageName';
} );
assert.propEqual( subject( {} ), { returnto: 'pageName' } );
} );
QUnit.test( 'empty props, nondefault URL', function ( assert ) {
const subject = CtaDrawer.prototype.test.redirectParams;
assert.propEqual( subject( {}, 'url' ), { returnto: 'url' } );
} );
QUnit.test( 'nonempty props', function ( assert ) {
const subject = CtaDrawer.prototype.test.redirectParams;
assert.propEqual( subject( { key: 'val' }, 'url' ), {
key: 'val',
returnto: 'url'
} );
} );
} );
QUnit.module( 'signUpParams()', function () {
QUnit.test( 'empty props', function ( assert ) {
const subject = CtaDrawer.prototype.test.signUpParams;
assert.propEqual( subject( {} ), { type: 'signup' } );
} );
QUnit.test( 'nonempty props', function ( assert ) {
const subject = CtaDrawer.prototype.test.signUpParams;
assert.propEqual( subject( { key: 'val' } ), {
key: 'val',
type: 'signup'
} );
} );
} );
QUnit.module( 'HTML', function () {
QUnit.test( 'defaults', function ( assert ) {
const
subject = new CtaDrawer(),
// Import the expected HTML as a string and replace spaces with a \s*. This allows
// the HTML some flexibility in how it's rendered.
html = new RegExp( require( './CtaDrawer.test.html' ).defaultURLs
.replace( /\n/g, ' ' ).replace( /\s+/g, '\\s*' ) );
sinon.assert.match( subject.$el.find( '.drawer' ).get( 0 ).outerHTML.replace( /\n/g, ' ' ), html );
assert.true( true );
} );
QUnit.test( 'overrides', function ( assert ) {
const
subject = new CtaDrawer( {
progressiveButton: new Button( {
progressive: true,
label: 'custom log in',
href: 'customLogIn'
} ).options,
actionAnchor: new Anchor( {
progressive: true,
label: 'custom sign up',
href: 'customSignUp'
} ).options
} ),
html = new RegExp( require( './CtaDrawer.test.html' )
.overrideURLs.replace( /\n/g, ' ' ).replace( /\s+/g, '\\s*' ) );
sinon.assert.match( subject.$el.find( '.drawer' ).get( 0 ).outerHTML.replace( /\n/g, ' ' ), html );
assert.true( true );
} );
} );
} );

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 3, 17:31 (19 h, 11 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
96/d1/f16d06b5e866063d294eb4515b0b
Default Alt Text
CtaDrawer.test.js (3 KB)

Event Timeline