diff --git a/spec/MockStorageApi.js b/spec/MockStorageApi.js new file mode 100644 index 000000000..9a1f738bf --- /dev/null +++ b/spec/MockStorageApi.js @@ -0,0 +1,54 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * A mock implementation of the webstorage api + * @constructor + */ +function MockStorageApi() { + this.data = {}; + this.keys = []; + this.length = 0; +} + +MockStorageApi.prototype = { + setItem: function(k, v) { + this.data[k] = v; + this._recalc(); + }, + getItem: function(k) { + return this.data[k] || null; + }, + removeItem: function(k) { + delete this.data[k]; + this._recalc(); + }, + key: function(index) { + return this.keys[index]; + }, + _recalc: function() { + var keys = []; + for (var k in this.data) { + if (!this.data.hasOwnProperty(k)) { continue; } + keys.push(k); + } + this.keys = keys; + this.length = keys.length; + } +}; + +/** */ +module.exports = MockStorageApi; diff --git a/spec/unit/webstorage.spec.js b/spec/unit/webstorage.spec.js index cf617a607..25a613e0c 100644 --- a/spec/unit/webstorage.spec.js +++ b/spec/unit/webstorage.spec.js @@ -5,36 +5,7 @@ var Room = sdk.Room; var User = sdk.User; var utils = require("../test-utils"); -function MockStorageApi() { - this.data = {}; - this.keys = []; - this.length = 0; -} -MockStorageApi.prototype = { - setItem: function(k, v) { - this.data[k] = v; - this._recalc(); - }, - getItem: function(k) { - return this.data[k] || null; - }, - removeItem: function(k) { - delete this.data[k]; - this._recalc(); - }, - key: function(index) { - return this.keys[index]; - }, - _recalc: function() { - var keys = []; - for (var k in this.data) { - if (!this.data.hasOwnProperty(k)) { continue; } - keys.push(k); - } - this.keys = keys; - this.length = keys.length; - } -}; +var MockStorageApi = require("../MockStorageApi"); describe("WebStorageStore", function() { var store, room;