mw.loader.implement( 'test.promise', [ QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/mwLoaderTestCallback.js' ) ] );
return mw.loader.using( 'test.promise' )
- .done( function () {
- assert.strictEqual( isAwesomeDone, true, 'test.promise module should\'ve caused isAwesomeDone to be true' );
- delete mw.loader.testCallback;
- } )
- .fail( function () {
- assert.ok( false, 'Error callback fired while loader.using "test.promise" module' );
- } );
+ .done( function () {
+ assert.strictEqual( isAwesomeDone, true, 'test.promise module should\'ve caused isAwesomeDone to be true' );
+ delete mw.loader.testCallback;
+ } )
+ .fail( function () {
+ assert.ok( false, 'Error callback fired while loader.using "test.promise" module' );
+ } );
} );
// Covers mw.loader#sortDependencies (with native Set if available)
assert.ok( /Circular/.test( String( e ) ), 'Detect circular dependency' );
}
)
- .always( done );
+ .always( done );
} );
// @covers mw.loader#sortDependencies (with fallback shim)
assert.ok( /Circular/.test( String( e ) ), 'Detect circular dependency' );
}
)
- .always( done );
+ .always( done );
} );
QUnit.test( '.load() - Error: Circular dependency', function ( assert ) {
}
};
} );
- return mw.loader.using( [ 'test.require1', 'test.require2', 'test.require3', 'test.require4' ] )
- .then( function ( require ) {
+ return mw.loader.using( [ 'test.require1', 'test.require2', 'test.require3', 'test.require4' ] ).then( function ( require ) {
var module1, module2, module3, module4;
module1 = require( 'test.require1' );
} );
} );
+ QUnit.test( 'Implicit dependencies', function ( assert ) {
+ var ranUser = false,
+ userSeesSite = false,
+ ranSite = false;
+
+ mw.loader.implement(
+ 'site',
+ function () {
+ ranSite = true;
+ }
+ );
+ mw.loader.implement(
+ 'user',
+ function () {
+ userSeesSite = ranSite;
+ ranUser = true;
+ }
+ );
+
+ assert.strictEqual( ranSite, false, 'verify site module not yet loaded' );
+ assert.strictEqual( ranUser, false, 'verify user module not yet loaded' );
+ return mw.loader.using( 'user', function () {
+ assert.strictEqual( ranSite, true, 'ran site module' );
+ assert.strictEqual( ranUser, true, 'ran user module' );
+ assert.strictEqual( userSeesSite, true, 'ran site before user module' );
+
+ // Reset
+ mw.loader.moduleRegistry[ 'site' ].state = 'registered';
+ mw.loader.moduleRegistry[ 'user' ].state = 'registered';
+ } );
+ } );
+
}( mediaWiki, jQuery ) );