@applicaster/zapp-react-dom-app
Version:
Zapp App Component for Applicaster's Quick Brick React Native App
53 lines (38 loc) • 1.05 kB
JavaScript
import * as R from "ramda";
export function StorageMock() {
const storage = {};
const methods = ["setItem", "getItem", "removeItem", "clear"];
storage.setItem = (key, value) => {
if (R.includes("fail", key)) {
throw new Error(`Could not set item ${key}`);
}
this[key] = value;
};
storage.clear = () => {
R.forEach((key) => {
delete this[key];
}, R.keys(this));
};
storage.removeItem = (key) => {
if (R.includes("fail", key)) {
throw new Error(`Could not remove item ${key}`);
}
delete this[key];
return true;
};
storage.getItem = (key) => {
const result = this[key];
if (!result) {
throw new Error(`Could not retrieve item ${key}`);
}
return result;
};
Object.defineProperty(storage, "length", {
get: () =>
R.compose(R.length, R.reject(R.includes(R.__, methods)), R.keys)(this),
});
Object.defineProperty(storage, "keys", {
get: () => R.compose(R.reject(R.includes(R.__, methods)), R.keys)(this),
});
return storage;
}