Page MenuHomeWickedGov Phorge

languageOverlay.test.js
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

languageOverlay.test.js

let
languageOverlay,
LanguageSearcher,
sandbox,
spy;
const
headless = typeof window !== 'object',
m = require( '../../../../src/mobile.startup/moduleLoaderSingleton' ),
util = require( '../../../../src/mobile.startup/util' ),
jQuery = require( '../../utils/jQuery' ),
dom = require( '../../utils/dom' ),
oo = require( '../../utils/oo' ),
mediaWiki = require( '../../utils/mw' ),
mustache = require( '../../utils/mustache' ),
sinon = require( 'sinon' );
QUnit.module( 'MobileFrontend languageOverlay.js', {
beforeEach: function () {
sandbox = sinon.sandbox.create();
dom.setUp( sandbox, global );
jQuery.setUp( sandbox, global );
oo.setUp( sandbox, global );
mediaWiki.setUp( sandbox, global );
mustache.setUp( sandbox, global );
LanguageSearcher = require( '../../../../src/mobile.languages.structured/LanguageSearcher' );
languageOverlay = require( '../../../../src/mobile.startup/languageOverlay/languageOverlay' );
sandbox.stub( mw, 'msg' )
.withArgs( 'mobile-frontend-language-heading' ).returns( '' )
.withArgs( 'mobile-frontend-loading-message' ).returns( '⌛' )
.withArgs( 'mobile-frontend-languages-structured-overlay-all-languages-header' ).returns( '' )
.withArgs( 'mobile-frontend-languages-structured-overlay-suggested-languages-header' ).returns( '' );
sandbox.stub( mw.loader, 'using' ).withArgs( 'mobile.languages.structured' ).returns( util.Deferred().resolve() );
// languageOverlay uses a global navigator so we need to stub it for headless tests
if ( headless ) {
global.navigator = global.navigator || undefined;
sandbox.stub( global, 'navigator' ).callsFake( () => {} );
}
spy = sandbox.stub( mw, 'hook' ).returns( { fire: function () {} } );
sandbox.stub( m, 'require' ).withArgs( 'mobile.languages.structured/LanguageSearcher' ).returns( LanguageSearcher );
},
afterEach: function () {
jQuery.tearDown();
sandbox.restore();
}
} );
QUnit.test( '#constructor', function ( assert ) {
const
gatewayDeferred = util.Deferred().resolve( {
languages: [],
variants: []
} ),
gateway = {
getPageLanguages: function () {
return gatewayDeferred;
}
},
overlay = languageOverlay( gateway );
assert.strictEqual( overlay.$el.find( '.overlay-content > .promised-view' ).text().trim(), '⌛', 'loading view rendered in .overlay-content' );
return languageOverlay.test.loadLanguageSearcher( gateway ).then( function () {
assert.strictEqual( overlay.$el.find( '.overlay-content > .promised-view' ).length, 0, 'promisedView has fulfilled its promise' );
assert.strictEqual( overlay.$el.find( '.overlay-content > .language-searcher' ).length, 1, 'loaded view rendered in .overlay-content' );
sinon.assert.calledWith( spy.withArgs( 'mobileFrontend.languageSearcher.onOpen' ) );
} );
} );

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 3, 18:01 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
28/9a/466f1bc96e18fe26829e43e77490
Default Alt Text
languageOverlay.test.js (2 KB)

Event Timeline