X-Git-Url: http://git.cyclocoop.org/%24action?a=blobdiff_plain;f=tests%2Fqunit%2Fsuites%2Fresources%2Fmediawiki%2Fmediawiki.loader.test.js;h=4c6e7c98f70cbd4e369a0c3522e452bbb6ed9593;hb=9f516f1d3b6ab6a4f1bb7e385c93e4d9bccb46d7;hp=894dd194cac8532ff0ef5155e03a9d0796be1550;hpb=a34c284b1a7096b594288850bd175709b749aea3;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js index 894dd194ca..4c6e7c98f7 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js @@ -21,6 +21,9 @@ window.Set = this.nativeSet; mw.redefineFallbacksForTest(); } + if ( this.resetStoreKey ) { + localStorage.removeItem( mw.loader.store.key ); + } // Remove any remaining temporary statics // exposed for cross-file mocks. delete mw.loader.testCallback; @@ -632,13 +635,11 @@ require( 'testUrlIncDump' ).query, { modules: 'testUrlIncDump', - // Expected: Wrapped hash just for this one module - // $hash = hash( 'fnv132', 'dump'); - // base_convert( $hash, 16, 36 ); // "13e9zzn" - // Previously: Wrapped hash for both modules, despite being in separate requests - // $hash = hash( 'fnv132', 'urldump' ); - // base_convert( $hash, 16, 36 ); // "18kz9ca" - version: '13e9zzn' + // Expected: Combine hashes only for the module in the specific HTTP request + // hash fnv132 => "13e9zzn" + // Wrong: Combine hashes for all requested modules, before request-splitting + // hash fnv132 => "18kz9ca" + version: '13e9z' }, 'Query parameters' ); @@ -668,13 +669,11 @@ require( 'testUrlOrderDump' ).query, { modules: 'testUrlOrder,testUrlOrderDump|testUrlOrder.a,b', - // Expected: Combined in order after string packing - // $hash = hash( 'fnv132', 'urldump12' ); - // base_convert( $hash, 16, 36 ); // "1knqzan" - // Previously: Combined in order of before string packing - // $hash = hash( 'fnv132', 'url12dump' ); - // base_convert( $hash, 16, 36 ); // "11eo3in" - version: '1knqzan' + // Expected: Combined by sorting names after string packing + // hash fnv132 = "1knqzan" + // Wrong: Combined by sorting names before string packing + // hash fnv132 => "11eo3in" + version: '1knqz' }, 'Query parameters' ); @@ -1049,6 +1048,78 @@ } ); } ); + QUnit.test( 'mw.loader.store.init - Invalid JSON', function ( assert ) { + // Reset + this.sandbox.stub( mw.loader.store, 'enabled', null ); + this.sandbox.stub( mw.loader.store, 'items', {} ); + this.resetStoreKey = true; + localStorage.setItem( mw.loader.store.key, 'invalid' ); + + mw.loader.store.init(); + assert.strictEqual( mw.loader.store.enabled, true, 'Enabled' ); + assert.strictEqual( + $.isEmptyObject( mw.loader.store.items ), + true, + 'Items starts fresh' + ); + } ); + + QUnit.test( 'mw.loader.store.init - Wrong JSON', function ( assert ) { + // Reset + this.sandbox.stub( mw.loader.store, 'enabled', null ); + this.sandbox.stub( mw.loader.store, 'items', {} ); + this.resetStoreKey = true; + localStorage.setItem( mw.loader.store.key, JSON.stringify( { wrong: true } ) ); + + mw.loader.store.init(); + assert.strictEqual( mw.loader.store.enabled, true, 'Enabled' ); + assert.strictEqual( + $.isEmptyObject( mw.loader.store.items ), + true, + 'Items starts fresh' + ); + } ); + + QUnit.test( 'mw.loader.store.init - Expired JSON', function ( assert ) { + // Reset + this.sandbox.stub( mw.loader.store, 'enabled', null ); + this.sandbox.stub( mw.loader.store, 'items', {} ); + this.resetStoreKey = true; + localStorage.setItem( mw.loader.store.key, JSON.stringify( { + items: { use: 'not me' }, + vary: mw.loader.store.vary, + asOf: 130161 // 2011-04-01 12:00 + } ) ); + + mw.loader.store.init(); + assert.strictEqual( mw.loader.store.enabled, true, 'Enabled' ); + assert.strictEqual( + $.isEmptyObject( mw.loader.store.items ), + true, + 'Items starts fresh' + ); + } ); + + QUnit.test( 'mw.loader.store.init - Good JSON', function ( assert ) { + // Reset + this.sandbox.stub( mw.loader.store, 'enabled', null ); + this.sandbox.stub( mw.loader.store, 'items', {} ); + this.resetStoreKey = true; + localStorage.setItem( mw.loader.store.key, JSON.stringify( { + items: { use: 'me' }, + vary: mw.loader.store.vary, + asOf: Math.ceil( Date.now() / 1e7 ) - 5 // ~ 13 hours ago + } ) ); + + mw.loader.store.init(); + assert.strictEqual( mw.loader.store.enabled, true, 'Enabled' ); + assert.deepEqual( + mw.loader.store.items, + { use: 'me' }, + 'Stored items are loaded' + ); + } ); + QUnit.test( 'require()', function ( assert ) { mw.loader.register( [ [ 'test.require1', '0' ],