import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; import pretender, { fixturesByUrl, response, } from "discourse/tests/helpers/create-pretender"; import { acceptance } from "discourse/tests/helpers/qunit-helpers"; import { cloneJSON } from "discourse-common/lib/object"; import { postStreamWithAcceptedAnswerExcerpt } from "../helpers/discourse-solved-helpers"; acceptance("Discourse Solved Plugin", function (needs) { needs.user(); test("A topic with an accepted answer shows an excerpt of the answer, if provided", async function (assert) { pretender.get("/t/11.json", () => response(postStreamWithAcceptedAnswerExcerpt("this is an excerpt")) ); pretender.get("/t/12.json", () => response(postStreamWithAcceptedAnswerExcerpt(null)) ); await visit("/t/with-excerpt/11"); assert.dom(".quote blockquote").hasText("this is an excerpt"); await visit("/t/without-excerpt/12"); assert.dom(".quote blockquote").doesNotExist(); assert.dom(".quote .title.title-only").exists(); }); test("Full page search displays solved status", async function (assert) { pretender.get("/search", () => { const fixtures = cloneJSON(fixturesByUrl["/search.json"]); fixtures.topics[0].has_accepted_answer = true; return response(fixtures); }); await visit("/search"); await fillIn(".search-query", "discourse"); await click(".search-cta"); assert.dom(".fps-topic").exists({ count: 1 }, "has one post"); assert.dom(".topic-status .solved").exists("shows the right icon"); }); });