import { test, module } from "qunit"; import { load } from "pretty-text/oneboxer"; import { ajax } from "discourse/lib/ajax"; import { failedCache, localCache } from "pretty-text/oneboxer-cache"; import { stringToHTML } from "discourse/tests/helpers/html-helper"; function loadOnebox(element) { return load({ elem: element, refresh: false, ajax, synchronous: true, categoryId: 1, topicId: 1, }); } module("Unit | Utility | oneboxer", function () { test("load - failed onebox", async function (assert) { let element = document.createElement("A"); element.setAttribute("href", "http://somebadurl.com"); await loadOnebox(element); assert.equal( failedCache["http://somebadurl.com"], true, "stores the url as failed in a cache" ); assert.equal( loadOnebox(element), undefined, "it returns early for a failed cache" ); }); test("load - successful onebox", async function (assert) { const html = ` `; let element = document.createElement("A"); element.setAttribute("href", "http://somegoodurl.com"); await loadOnebox(element); assert.equal( localCache["http://somegoodurl.com"].prop("outerHTML"), stringToHTML(html).outerHTML, "stores the html of the onebox in a local cache" ); assert.equal( loadOnebox(element), html.trim(), "it returns the html from the cache" ); }); });