import { module, test } from "qunit"; import { setupRenderingTest } from "discourse/tests/helpers/component-test"; import { click, render } from "@ember/test-helpers"; import { exists } from "discourse/tests/helpers/qunit-helpers"; import { hbs } from "ember-cli-htmlbars"; import TopicStatusIcons from "discourse/helpers/topic-status-icons"; import createStore from "discourse/tests/helpers/create-store"; module("Integration | Component | Widget | topic-status", function (hooks) { setupRenderingTest(hooks); test("basics", async function (assert) { const store = createStore(); this.set("args", { topic: store.createRecord("topic", { closed: true }), disableActions: true, }); await render( hbs`` ); assert.ok(exists(".topic-status .d-icon-lock")); }); test("extendability", async function (assert) { const store = createStore(); TopicStatusIcons.addObject([ "has_accepted_answer", "far-check-square", "solved", ]); this.set("args", { topic: store.createRecord("topic", { has_accepted_answer: true, }), disableActions: true, }); await render( hbs`` ); assert.ok(exists(".topic-status .d-icon-far-check-square")); }); test("toggling pin status", async function (assert) { const store = createStore(); this.set("args", { topic: store.createRecord("topic", { closed: true, pinned: true }), }); await render( hbs`` ); assert.ok(exists(".topic-statuses .pinned"), "pinned icon is shown"); assert.ok( !exists(".topic-statuses .unpinned"), "unpinned icon is not shown" ); await click(".topic-statuses .pin-toggle-button"); assert.ok(!exists(".topic-statuses .pinned"), "pinned icon is not shown"); assert.ok(exists(".topic-statuses .unpinned"), "unpinned icon is shown"); await click(".topic-statuses .pin-toggle-button"); assert.ok(exists(".topic-statuses .pinned"), "pinned icon is shown"); assert.ok( !exists(".topic-statuses .unpinned"), "unpinned icon is not shown" ); }); });