forked from mirrors/gecko-dev
48 lines
1.8 KiB
JavaScript
48 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
// The name of this module conflicts with the window.Storage
|
|
// DOM global - https://developer.mozilla.org/en-US/docs/Web/API/Storage .
|
|
// eslint-disable-next-line mozilla/no-redeclare-with-import-autofix
|
|
const { Storage } = ChromeUtils.import("resource://normandy/lib/Storage.jsm");
|
|
|
|
add_task(async function() {
|
|
const store1 = new Storage("prefix1");
|
|
const store2 = new Storage("prefix2");
|
|
|
|
// Make sure values return null before being set
|
|
Assert.equal(await store1.getItem("key"), null);
|
|
Assert.equal(await store2.getItem("key"), null);
|
|
|
|
// Set values to check
|
|
await store1.setItem("key", "value1");
|
|
await store2.setItem("key", "value2");
|
|
|
|
// Check that they are available
|
|
Assert.equal(await store1.getItem("key"), "value1");
|
|
Assert.equal(await store2.getItem("key"), "value2");
|
|
|
|
// Remove them, and check they are gone
|
|
await store1.removeItem("key");
|
|
await store2.removeItem("key");
|
|
Assert.equal(await store1.getItem("key"), null);
|
|
Assert.equal(await store2.getItem("key"), null);
|
|
|
|
// Check that numbers are stored as numbers (not strings)
|
|
await store1.setItem("number", 42);
|
|
Assert.equal(await store1.getItem("number"), 42);
|
|
|
|
// Check complex types work
|
|
const complex = { a: 1, b: [2, 3], c: { d: 4 } };
|
|
await store1.setItem("complex", complex);
|
|
Assert.deepEqual(await store1.getItem("complex"), complex);
|
|
|
|
// Check that clearing the storage removes data from multiple
|
|
// prefixes.
|
|
await store1.setItem("removeTest", 1);
|
|
await store2.setItem("removeTest", 2);
|
|
Assert.equal(await store1.getItem("removeTest"), 1);
|
|
Assert.equal(await store2.getItem("removeTest"), 2);
|
|
await Storage.clearAllStorage();
|
|
Assert.equal(await store1.getItem("removeTest"), null);
|
|
Assert.equal(await store2.getItem("removeTest"), null);
|
|
});
|