This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/integration/components/widgets/topic-status-test.js
Jarek Radosz 25aa0bc10d
DEV: Deprecate create-store test helper (#19021)
Use the regular Store service instead.
2022-11-16 10:54:46 +01:00

77 lines
2.3 KiB
JavaScript

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 { getOwner } from "discourse-common/lib/get-owner";
module("Integration | Component | Widget | topic-status", function (hooks) {
setupRenderingTest(hooks);
test("basics", async function (assert) {
const store = getOwner(this).lookup("service:store");
this.set("args", {
topic: store.createRecord("topic", { closed: true }),
disableActions: true,
});
await render(
hbs`<MountWidget @widget="topic-status" @args={{this.args}} />`
);
assert.ok(exists(".topic-status .d-icon-lock"));
});
test("extendability", async function (assert) {
const store = getOwner(this).lookup("service:store");
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`<MountWidget @widget="topic-status" @args={{this.args}} />`
);
assert.ok(exists(".topic-status .d-icon-far-check-square"));
});
test("toggling pin status", async function (assert) {
const store = getOwner(this).lookup("service:store");
this.set("args", {
topic: store.createRecord("topic", { closed: true, pinned: true }),
});
await render(
hbs`<MountWidget @widget="topic-status" @args={{this.args}} />`
);
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"
);
});
});