/* global jest */ export default class MockStorage { constructor(cache = {}) { this.storageCache = cache; } setItem = jest.fn((key, value) => { return new Promise((resolve, reject) => { return typeof key !== 'string' || typeof value !== 'string' ? reject(new Error('key and value must be string')) : resolve((this.storageCache[key] = value)); }); }); getItem = jest.fn(key => { return new Promise(resolve => { return this.storageCache.hasOwnProperty(key) ? resolve(this.storageCache[key]) : resolve(null); }); }); removeItem = jest.fn(key => { return new Promise((resolve, reject) => { return this.storageCache.hasOwnProperty(key) ? resolve(delete this.storageCache[key]) : reject(new Error('No such key!')); }); }); clear = jest.fn(key => { return new Promise((resolve, reject) => resolve((this.storageCache = {}))); }); getAllKeys = jest.fn(key => { return new Promise((resolve, reject) => resolve(Object.keys(this.storageCache))); }); }