mw.loader: Add unit test to confirm implicit 'site' dependency for 'user'
authorTimo Tijhof <krinklemail@gmail.com>
Thu, 14 Sep 2017 09:48:03 +0000 (11:48 +0200)
committerTimo Tijhof <krinklemail@gmail.com>
Thu, 14 Sep 2017 09:48:03 +0000 (11:48 +0200)
The underlying logic is in mw.loader#execute and mw.loader#runScript,
but currently untested.

Adding tests in prep for refactoring this code.

Change-Id: I77ffb5f23443e24ca1d86f36ddf434673e9c1538

tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js

index 985ff92..64415e0 100644 (file)
                } );
        } );
 
+       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 ) );