import { failedCache, localCache } from "pretty-text/oneboxer-cache";
import { module, test } from "qunit";
import { ajax } from "discourse/lib/ajax";
import { load } from "pretty-text/oneboxer";

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) {
    let element = document.createElement("A");
    element.setAttribute("href", "http://somegoodurl.com");

    await loadOnebox(element);

    assert.ok(
      localCache["http://somegoodurl.com"]
        .prop("outerHTML")
        .indexOf("Yet another collaboration tool") !== -1,
      "stores the html of the onebox in a local cache"
    );
    assert.ok(
      loadOnebox(element).indexOf("Yet another collaboration tool") !== -1,
      "it returns the html from the cache"
    );
  });
});
