X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fqunit%2Fsuites%2Fresources%2Fmediawiki%2Fmediawiki.loader.test.js;h=92ee7dd360105dbec7ae7a3d273d2532674f136d;hp=bfac513cf309112aea3338bb4b58fab85286767a;hb=6bb1170e2f3539218965d1ceaa2cfc5e6197f465;hpb=59e7337ea612d03d08b67e6ada707e3d7ced738d diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js index bfac513cf3..92ee7dd360 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js @@ -127,13 +127,59 @@ .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' ); } ); } ); + QUnit.test( '.using() Error: Circular dependency', function ( assert ) { + var done = assert.async(); + + mw.loader.register( [ + [ 'test.circle1', '0', [ 'test.circle2' ] ], + [ 'test.circle2', '0', [ 'test.circle3' ] ], + [ 'test.circle3', '0', [ 'test.circle1' ] ] + ] ); + mw.loader.using( 'test.circle3' ).then( + function done() { + assert.ok( false, 'Unexpected resolution, expected error.' ); + }, + function fail( e ) { + assert.ok( /Circular/.test( String( e ) ), 'Detect circular dependency' ); + } + ) + .always( done ); + } ); + + QUnit.test( '.load() - Error: Circular dependency', function ( assert ) { + mw.loader.register( [ + [ 'test.circleA', '0', [ 'test.circleB' ] ], + [ 'test.circleB', '0', [ 'test.circleC' ] ], + [ 'test.circleC', '0', [ 'test.circleA' ] ] + ] ); + assert.throws( function () { + mw.loader.load( 'test.circleC' ); + }, /Circular/, 'Detect circular dependency' ); + } ); + + QUnit.test( '.using() - Error: Unregistered', function ( assert ) { + var done = assert.async(); + + mw.loader.using( 'test.using.unreg' ).then( + function done() { + assert.ok( false, 'Unexpected resolution, expected error.' ); + }, + function fail( e ) { + assert.ok( /Unknown/.test( String( e ) ), 'Detect unknown dependency' ); + } + ).always( done ); + } ); + + QUnit.test( '.load() - Error: Unregistered (ignored)', 0, function ( assert ) { + mw.loader.load( 'test.using.unreg2' ); + } ); + QUnit.test( '.implement( styles={ "css": [text, ..] } )', 2, function ( assert ) { var $element = $( '
' ).appendTo( '#qunit-fixture' ); @@ -420,17 +466,6 @@ assert.strictEqual( mw.track.callCount, 1 ); } ); - QUnit.test( 'Circular dependency', 1, function ( assert ) { - mw.loader.register( [ - [ 'test.circle1', '0', [ 'test.circle2' ] ], - [ 'test.circle2', '0', [ 'test.circle3' ] ], - [ 'test.circle3', '0', [ 'test.circle1' ] ] - ] ); - assert.throws( function () { - mw.loader.using( 'test.circle3' ); - }, /Circular/, 'Detect circular dependency' ); - } ); - QUnit.test( 'Out-of-order implementation', 9, function ( assert ) { mw.loader.register( [ [ 'test.module4', '0' ], @@ -601,6 +636,25 @@ mw.loader.load( target ); } ); + QUnit.test( 'Empty string module name - T28804', function ( assert ) { + var done = false; + + assert.strictEqual( mw.loader.getState( '' ), null, 'State (unregistered)' ); + + mw.loader.register( '', 'v1' ); + assert.strictEqual( mw.loader.getState( '' ), 'registered', 'State (registered)' ); + assert.strictEqual( mw.loader.getVersion( '' ), 'v1', 'Version' ); + + mw.loader.implement( '', function () { + done = true; + } ); + + return mw.loader.using( '', function () { + assert.strictEqual( done, true, 'script ran' ); + assert.strictEqual( mw.loader.getState( '' ), 'ready', 'State (ready)' ); + } ); + } ); + QUnit.test( 'Executing race - T112232', 2, function ( assert ) { var done = false; @@ -639,6 +693,8 @@ return mw.loader.using( 'test.stale' ) .then( function () { assert.strictEqual( count, 1 ); + // After implementing, registry contains version as implemented by the response. + assert.strictEqual( mw.loader.getVersion( 'test.stale' ), 'v1', 'Override version' ); assert.strictEqual( mw.loader.getState( 'test.stale' ), 'ready' ); assert.ok( mw.loader.store.get( 'test.stale' ), 'In store' ); } )