import componentTest, {
  setupRenderingTest,
} from "discourse/tests/helpers/component-test";
import {
  discourseModule,
  queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { click } from "@ember/test-helpers";
import hbs from "htmlbars-inline-precompile";

discourseModule(
  "Integration | Component | Widget | post-links",
  function (hooks) {
    setupRenderingTest(hooks);

    componentTest("duplicate links", {
      template: hbs`{{mount-widget widget="post-links" args=args}}`,
      beforeEach() {
        this.set("args", {
          id: 2,
          links: [
            {
              title: "Evil Trout Link",
              url: "http://eviltrout.com",
              reflection: true,
            },
            {
              title: "Evil Trout Link",
              url: "http://dupe.eviltrout.com",
              reflection: true,
            },
          ],
        });
      },
      test(assert) {
        assert.equal(
          queryAll(".post-links a.track-link").length,
          1,
          "it hides the dupe link"
        );
      },
    });

    componentTest("collapsed links", {
      template: hbs`{{mount-widget widget="post-links" args=args}}`,
      beforeEach() {
        this.set("args", {
          id: 1,
          links: [
            {
              title: "Link 1",
              url: "http://eviltrout.com?1",
              reflection: true,
            },
            {
              title: "Link 2",
              url: "http://eviltrout.com?2",
              reflection: true,
            },
            {
              title: "Link 3",
              url: "http://eviltrout.com?3",
              reflection: true,
            },
            {
              title: "Link 4",
              url: "http://eviltrout.com?4",
              reflection: true,
            },
            {
              title: "Link 5",
              url: "http://eviltrout.com?5",
              reflection: true,
            },
            {
              title: "Link 6",
              url: "http://eviltrout.com?6",
              reflection: true,
            },
            {
              title: "Link 7",
              url: "http://eviltrout.com?7",
              reflection: true,
            },
          ],
        });
      },
      async test(assert) {
        assert.ok(
          queryAll(".expand-links").length === 1,
          "collapsed by default"
        );
        await click("a.expand-links");
        assert.equal(queryAll(".post-links a.track-link").length, 7);
      },
    });
  }
);
