import PreloadStore from 'preload-store'; 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"); }); asyncTestDiscourse("getAndRemove returns a promise that resolves to null", function(assert) { assert.expect(1); const done = assert.async(); PreloadStore.getAndRemove('joker').then(function(result) { assert.blank(result); done(); }); }); asyncTestDiscourse("getAndRemove returns a promise that resolves to the result of the finder", function(assert) { assert.expect(1); const done = assert.async(); const finder = function() { return 'batdance'; }; PreloadStore.getAndRemove('joker', finder).then(function(result) { assert.equal(result, 'batdance'); done(); }); }); asyncTestDiscourse("getAndRemove returns a promise that resolves to the result of the finder's promise", function(assert) { assert.expect(1); const finder = function() { return new Ember.RSVP.Promise(function(resolve) { resolve('hahahah'); }); }; const done = assert.async(); PreloadStore.getAndRemove('joker', finder).then(function(result) { assert.equal(result, 'hahahah'); done(); }); }); asyncTestDiscourse("returns a promise that rejects with the result of the finder's rejected promise", function(assert) { assert.expect(1); const finder = function() { return new Ember.RSVP.Promise(function(resolve, reject) { reject('error'); }); }; const done = assert.async(); PreloadStore.getAndRemove('joker', finder).then(null, function(result) { assert.equal(result, 'error'); done(); }); }); asyncTestDiscourse("returns a promise that resolves to 'evil'", function(assert) { assert.expect(1); const done = assert.async(); PreloadStore.getAndRemove('bane').then(function(result) { assert.equal(result, 'evil'); done(); }); });