mirror of
https://github.com/hanzoai/forum.git
synced 2026-09-30 21:51:19 +00:00
150 lines
5.2 KiB
JavaScript
150 lines
5.2 KiB
JavaScript
import { click, triggerKeyEvent, visit } from "@ember/test-helpers";
|
|
import { test } from "qunit";
|
|
import { cloneJSON } from "discourse/lib/object";
|
|
import topicFixtures from "discourse/tests/fixtures/topic";
|
|
import { acceptance, selectText } from "discourse/tests/helpers/qunit-helpers";
|
|
import { i18n } from "discourse-i18n";
|
|
|
|
acceptance("Topic - Quote button - logged in", function (needs) {
|
|
needs.user();
|
|
needs.settings({
|
|
share_quote_visibility: "anonymous",
|
|
share_quote_buttons: "twitter|email",
|
|
});
|
|
|
|
needs.pretender((server, helper) => {
|
|
server.get("/inline-onebox", () =>
|
|
helper.response({
|
|
"inline-oneboxes": [
|
|
{
|
|
url: "http://www.example.com/57350945",
|
|
title: "This is a great title",
|
|
},
|
|
],
|
|
})
|
|
);
|
|
});
|
|
|
|
test("Does not show the quote share buttons by default", async function (assert) {
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_5 blockquote");
|
|
assert.dom(".insert-quote").exists("shows the quote button");
|
|
assert.dom(".quote-sharing").doesNotExist("does not show quote sharing");
|
|
});
|
|
|
|
test("Shows quote share buttons with the right site settings", async function (assert) {
|
|
this.siteSettings.share_quote_visibility = "all";
|
|
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_5 blockquote");
|
|
|
|
assert.dom(".quote-sharing").exists("shows the quote sharing options");
|
|
assert
|
|
.dom(`.quote-sharing .btn[title='${i18n("share.twitter")}']`)
|
|
.exists("includes the twitter share button");
|
|
assert
|
|
.dom(`.quote-sharing .btn[title='${i18n("share.email")}']`)
|
|
.exists("includes the email share button");
|
|
});
|
|
|
|
test("Quoting a Onebox should not copy the formatting of the rendered Onebox", async function (assert) {
|
|
await visit("/t/topic-for-group-moderators/2480");
|
|
await selectText("#post_3 aside.onebox p");
|
|
await click(".insert-quote");
|
|
|
|
assert
|
|
.dom(".d-editor-input")
|
|
.hasValue(
|
|
'[quote="group_moderator, post:3, topic:2480"]\nhttps://example.com/57350945\n[/quote]\n\n',
|
|
"quote only contains a link"
|
|
);
|
|
});
|
|
});
|
|
|
|
acceptance("Closed Topic - Quote button - logged in", function (needs) {
|
|
needs.user();
|
|
|
|
needs.pretender((server, helper) => {
|
|
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
|
topicResponse.closed = true;
|
|
topicResponse.details.can_create_post = false;
|
|
|
|
server.get("/t/280.json", () => helper.response(topicResponse));
|
|
});
|
|
|
|
test("Shows quote button in closed topics", async function (assert) {
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_1 .cooked p:first-child");
|
|
assert.dom(".insert-quote").exists("shows the quote button");
|
|
|
|
await click(".insert-quote");
|
|
assert
|
|
.dom(".d-editor-input")
|
|
.hasValue(
|
|
/^\s*Continuing the discussion from/,
|
|
"quote action defaults to reply as new topic (since topic is closed)"
|
|
);
|
|
});
|
|
});
|
|
|
|
acceptance("Topic - Quote button - anonymous", function (needs) {
|
|
needs.settings({
|
|
share_quote_visibility: "anonymous",
|
|
share_quote_buttons: "twitter|email",
|
|
});
|
|
|
|
test("Shows quote share buttons with the right site settings", async function (assert) {
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_5 blockquote");
|
|
|
|
assert.dom(".quote-sharing").exists("shows the quote sharing options");
|
|
assert
|
|
.dom(`.quote-sharing .btn[title='${i18n("share.twitter")}']`)
|
|
.exists("includes the twitter share button");
|
|
assert
|
|
.dom(`.quote-sharing .btn[title='${i18n("share.email")}']`)
|
|
.exists("includes the email share button");
|
|
assert.dom(".insert-quote").doesNotExist("does not show the quote button");
|
|
});
|
|
|
|
test("Shows single share button when site setting only has one item", async function (assert) {
|
|
this.siteSettings.share_quote_buttons = "twitter";
|
|
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_5 blockquote");
|
|
|
|
assert.dom(".quote-sharing").exists("shows the quote sharing options");
|
|
assert
|
|
.dom(`.quote-sharing .btn[title='${i18n("share.twitter")}']`)
|
|
.exists("includes the twitter share button");
|
|
assert
|
|
.dom(".quote-share-label")
|
|
.doesNotExist("does not show the Share label");
|
|
});
|
|
|
|
test("Shows nothing when visibility is disabled", async function (assert) {
|
|
this.siteSettings.share_quote_visibility = "none";
|
|
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_5 blockquote");
|
|
|
|
assert.dom(".quote-sharing").doesNotExist("does not show quote sharing");
|
|
assert.dom(".insert-quote").doesNotExist("does not show the quote button");
|
|
});
|
|
});
|
|
|
|
acceptance("Topic - Quote button - keyboard shortcut", function (needs) {
|
|
needs.user();
|
|
|
|
test("Can use keyboard shortcut to quote selected text", async function (assert) {
|
|
await visit("/t/internationalization-localization/280");
|
|
await selectText("#post_1 .cooked");
|
|
await triggerKeyEvent(document, "keypress", "Q");
|
|
assert.dom(".d-editor-input").exists("the editor is open");
|
|
|
|
assert
|
|
.dom(".d-editor-input")
|
|
.hasValue(/Any plans to support/, "editor includes selected text");
|
|
});
|
|
});
|