import PreloadStore from "discourse/lib/preload-store"; import { Promise } from "rsvp"; QUnit.module("preload-store", { beforeEach() { PreloadStore.store("bane", "evil"); } }); QUnit.test("get", assert => { assert.blank(PreloadStore.get("joker"), "returns blank for a missing key"); assert.equal( PreloadStore.get("bane"), "evil", "returns the value for that key" ); }); QUnit.test("remove", assert => { PreloadStore.remove("bane"); assert.blank(PreloadStore.get("bane"), "removes the value if the key exists"); }); QUnit.test( "getAndRemove returns a promise that resolves to null", async assert => { assert.blank(await PreloadStore.getAndRemove("joker")); } ); QUnit.test( "getAndRemove returns a promise that resolves to the result of the finder", async assert => { const finder = () => "batdance"; const result = await PreloadStore.getAndRemove("joker", finder); assert.equal(result, "batdance"); } ); QUnit.test( "getAndRemove returns a promise that resolves to the result of the finder's promise", async assert => { const finder = () => Promise.resolve("hahahah"); const result = await PreloadStore.getAndRemove("joker", finder); assert.equal(result, "hahahah"); } ); QUnit.test( "returns a promise that rejects with the result of the finder's rejected promise", async assert => { const finder = () => Promise.reject("error"); await PreloadStore.getAndRemove("joker", finder).catch(result => { assert.equal(result, "error"); }); } ); QUnit.test("returns a promise that resolves to 'evil'", async assert => { const result = await PreloadStore.getAndRemove("bane"); assert.equal(result, "evil"); });