mock-webstorage
Version:
A mock WebStorage class for mocking localStorage and sessionStorage objects in tests.
81 lines (67 loc) • 5.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var MockStorage =
/*#__PURE__*/
function () {
function MockStorage() {
(0, _classCallCheck2.default)(this, MockStorage);
(0, _defineProperty2.default)(this, "_keys", []);
(0, _defineProperty2.default)(this, "_data", Object.create(null));
}
(0, _createClass2.default)(MockStorage, [{
key: "key",
value: function key(i) {
i = Math.floor(Number(i));
return i >= 0 && i < this._keys.length ? this._keys[i] : null;
}
}, {
key: "getItem",
value: function getItem(k) {
k = String(k);
return k in this._data ? this._data[k] : null;
}
}, {
key: "setItem",
value: function setItem(k, v) {
k = String(k);
if (!(k in this._data)) {
this._keys.push(k);
}
this._data[k] = String(v);
}
}, {
key: "removeItem",
value: function removeItem(k) {
k = String(k);
if (k in this._data) {
var i = this._keys.indexOf(k);
if (i < 0) throw new Error('Should not happen');
this._keys.splice(i, 1);
delete this._data[k];
}
}
}, {
key: "clear",
value: function clear() {
this._keys = [];
this._data = Object.create(null);
}
}, {
key: "length",
get: function get() {
return this._keys.length;
}
}]);
return MockStorage;
}();
exports.default = MockStorage;
module.exports = exports.default;
module.exports.default = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJNb2NrU3RvcmFnZSIsIk9iamVjdCIsImNyZWF0ZSIsImkiLCJNYXRoIiwiZmxvb3IiLCJOdW1iZXIiLCJfa2V5cyIsImxlbmd0aCIsImsiLCJTdHJpbmciLCJfZGF0YSIsInYiLCJwdXNoIiwiaW5kZXhPZiIsIkVycm9yIiwic3BsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLFc7Ozs7O2lEQUNJLEU7aURBQ1NDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLElBQWQsQzs7Ozs7d0JBTTVCQyxDLEVBQTBCO0FBQzVCQSxNQUFBQSxDQUFDLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFNLENBQUNILENBQUQsQ0FBakIsQ0FBSjtBQUNBLGFBQVFBLENBQUMsSUFBSSxDQUFMLElBQVVBLENBQUMsR0FBRyxLQUFLSSxLQUFMLENBQVdDLE1BQTFCLEdBQW9DLEtBQUtELEtBQUwsQ0FBV0osQ0FBWCxDQUFwQyxHQUFvRCxJQUEzRDtBQUNEOzs7NEJBRU9NLEMsRUFBMEI7QUFDaENBLE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7QUFDQSxhQUFRQSxDQUFDLElBQUksS0FBS0UsS0FBWCxHQUFvQixLQUFLQSxLQUFMLENBQVdGLENBQVgsQ0FBcEIsR0FBb0MsSUFBM0M7QUFDRDs7OzRCQUVPQSxDLEVBQVdHLEMsRUFBaUI7QUFDbENILE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7O0FBQ0EsVUFBSSxFQUFFQSxDQUFDLElBQUksS0FBS0UsS0FBWixDQUFKLEVBQXdCO0FBQ3RCLGFBQUtKLEtBQUwsQ0FBV00sSUFBWCxDQUFnQkosQ0FBaEI7QUFDRDs7QUFDRCxXQUFLRSxLQUFMLENBQVdGLENBQVgsSUFBZ0JDLE1BQU0sQ0FBQ0UsQ0FBRCxDQUF0QjtBQUNEOzs7K0JBRVVILEMsRUFBaUI7QUFDMUJBLE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7O0FBQ0EsVUFBSUEsQ0FBQyxJQUFJLEtBQUtFLEtBQWQsRUFBcUI7QUFDbkIsWUFBTVIsQ0FBQyxHQUFHLEtBQUtJLEtBQUwsQ0FBV08sT0FBWCxDQUFtQkwsQ0FBbkIsQ0FBVjs7QUFDQSxZQUFJTixDQUFDLEdBQUcsQ0FBUixFQUFXLE1BQU0sSUFBSVksS0FBSixDQUFVLG1CQUFWLENBQU47O0FBQ1gsYUFBS1IsS0FBTCxDQUFXUyxNQUFYLENBQWtCYixDQUFsQixFQUFxQixDQUFyQjs7QUFDQSxlQUFPLEtBQUtRLEtBQUwsQ0FBV0YsQ0FBWCxDQUFQO0FBQ0Q7QUFDRjs7OzRCQUVhO0FBQ1osV0FBS0YsS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFLSSxLQUFMLEdBQWNWLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLElBQWQsQ0FBZDtBQUNEOzs7d0JBbkNvQjtBQUNuQixhQUFPLEtBQUtLLEtBQUwsQ0FBV0MsTUFBbEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vY2tTdG9yYWdlIHtcbiAgX2tleXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgX2RhdGE6IHtbazogc3RyaW5nXTogc3RyaW5nfSA9IChPYmplY3QuY3JlYXRlKG51bGwpOiBhbnkpO1xuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5cy5sZW5ndGg7XG4gIH1cblxuICBrZXkoaTogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaSA9IE1hdGguZmxvb3IoTnVtYmVyKGkpKTtcbiAgICByZXR1cm4gKGkgPj0gMCAmJiBpIDwgdGhpcy5fa2V5cy5sZW5ndGgpID8gdGhpcy5fa2V5c1tpXSA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtKGs6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGsgPSBTdHJpbmcoayk7XG4gICAgcmV0dXJuIChrIGluIHRoaXMuX2RhdGEpID8gdGhpcy5fZGF0YVtrXSA6IG51bGw7XG4gIH1cblxuICBzZXRJdGVtKGs6IHN0cmluZywgdjogc3RyaW5nKTogdm9pZCB7XG4gICAgayA9IFN0cmluZyhrKTtcbiAgICBpZiAoIShrIGluIHRoaXMuX2RhdGEpKSB7XG4gICAgICB0aGlzLl9rZXlzLnB1c2goayk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGFba10gPSBTdHJpbmcodik7XG4gIH1cblxuICByZW1vdmVJdGVtKGs6IHN0cmluZyk6IHZvaWQge1xuICAgIGsgPSBTdHJpbmcoayk7XG4gICAgaWYgKGsgaW4gdGhpcy5fZGF0YSkge1xuICAgICAgY29uc3QgaSA9IHRoaXMuX2tleXMuaW5kZXhPZihrKTtcbiAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgbm90IGhhcHBlbicpO1xuICAgICAgdGhpcy5fa2V5cy5zcGxpY2UoaSwgMSk7XG4gICAgICBkZWxldGUgdGhpcy5fZGF0YVtrXTtcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXlzID0gW107XG4gICAgdGhpcy5fZGF0YSA9IChPYmplY3QuY3JlYXRlKG51bGwpOiBhbnkpO1xuICB9XG59XG4iXX0=