X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fqunit%2Fsuites%2Fresources%2Fmediawiki%2Fmediawiki.storage.test.js;h=82d5ea5b4deed44795605c5b1690d1aab79e3e9d;hb=dfec83932fd38a9086eb5a2e212889ad00f35b0e;hp=436cb2ed7555c897baafcbe76bff0568943a50ad;hpb=2dd58ade75d15a5895c0c010e17b6f729a0f72fe;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js index 436cb2ed75..82d5ea5b4d 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js @@ -1,23 +1,44 @@ -( function ( mw ) { +( function () { QUnit.module( 'mediawiki.storage' ); - QUnit.test( 'set/get with storage support', function ( assert ) { - var stub = { - setItem: this.sandbox.spy(), - getItem: this.sandbox.stub() - }; - stub.getItem.withArgs( 'foo' ).returns( 'test' ); - stub.getItem.returns( null ); + QUnit.test( 'set/get(Object) with storage support', function ( assert ) { + var data = {}, + object = { test: 'value' }, + stub = { + setItem: function ( k, v ) { + data[ k ] = v; + return true; + }, + getItem: function ( k ) { + return Object.prototype.hasOwnProperty.call( data, k ) ? data[ k ] : null; + }, + removeItem: function ( k ) { + delete data[ k ]; + return true; + } + }; + this.sandbox.stub( mw.storage, 'store', stub ); - mw.storage.set( 'foo', 'test' ); - assert.ok( stub.setItem.calledOnce ); + assert.strictEqual( mw.storage.set( 'foo', 'test' ), true, 'set returns true' ); + assert.strictEqual( mw.storage.get( 'foo' ), 'test', 'Check value gets stored' ); + assert.strictEqual( mw.storage.get( 'bar' ), null, 'Unset values are null' ); + assert.strictEqual( mw.storage.remove( 'foo' ), true, 'remove returns true' ); + assert.strictEqual( mw.storage.get( 'foo' ), null, 'Removed item is null' ); + + assert.strictEqual( mw.storage.setObject( 'baz', object ), true, 'setObject returns true' ); + assert.deepEqual( mw.storage.getObject( 'baz' ), object, 'Check value gets stored' ); + assert.notStrictEqual( mw.storage.getObject( 'baz' ), object, 'Retrieved value is a new object' ); + assert.strictEqual( mw.storage.getObject( 'quux' ), null, 'Unset values are null' ); + assert.strictEqual( mw.storage.remove( 'baz' ), true, 'remove returns true' ); + assert.strictEqual( mw.storage.getObject( 'baz' ), null, 'Removed item is null' ); + + mw.storage.set( 'baz', 'Non-JSON' ); + assert.strictEqual( mw.storage.getObject( 'baz' ), null, 'Non-JSON values are null' ); - assert.strictEqual( mw.storage.get( 'foo' ), 'test', 'Check value gets stored.' ); - assert.strictEqual( mw.storage.get( 'bar' ), null, 'Unset values are null.' ); } ); - QUnit.test( 'set/get with storage methods disabled', function ( assert ) { + QUnit.test( 'set/get(Object) with storage methods disabled', function ( assert ) { // This covers browsers where storage is disabled // (quota full, or security/privacy settings). // On most browsers, these interface will be accessible with @@ -34,10 +55,14 @@ assert.strictEqual( mw.storage.get( 'foo' ), false ); assert.strictEqual( mw.storage.set( 'foo', 'test' ), false ); - assert.strictEqual( mw.storage.remove( 'foo', 'test' ), false ); + assert.strictEqual( mw.storage.remove( 'foo' ), false ); + + assert.strictEqual( mw.storage.getObject( 'bar' ), false ); + assert.strictEqual( mw.storage.setObject( 'bar', { test: 'value' } ), false ); + assert.strictEqual( mw.storage.remove( 'bar' ), false ); } ); - QUnit.test( 'set/get with storage object disabled', function ( assert ) { + QUnit.test( 'set/get(Object) with storage object disabled', function ( assert ) { // On other browsers, these entire object is disabled. // `'localStorage' in window` would be true (and pass feature test) // but trying to read the object as window.localStorage would throw @@ -50,7 +75,11 @@ assert.strictEqual( mw.storage.set( 'foo', 'test' ), false ); assert.strictEqual( mw.storage.remove( 'foo', 'test' ), false ); + assert.strictEqual( mw.storage.getObject( 'bar' ), false ); + assert.strictEqual( mw.storage.setObject( 'bar', { test: 'value' } ), false ); + assert.strictEqual( mw.storage.remove( 'bar' ), false ); + mw.storage.store = old; } ); -}( mediaWiki ) ); +}() );