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/acceptance/topic-quote-button-test.js
Robin Ward 71d37953d5 REFACTOR: Import QUnit and related helpers rather than globals
We used many global functions to handle tests when they should be
imported like other libraries in our application. This also gets us
closer to the way Ember CLI prefers our tests to be laid out.
2020-10-07 11:50:49 -04:00

115 lines
3.2 KiB
JavaScript

import { test } from "qunit";
import I18n from "I18n";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
function selectText(selector) {
const range = document.createRange();
const node = document.querySelector(selector);
range.selectNodeContents(node);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
acceptance("Topic - Quote button - logged in", {
loggedIn: true,
settings: {
share_quote_visibility: "anonymous",
share_quote_buttons: "twitter|email",
},
});
test("Does not show the quote share buttons by default", async (assert) => {
await visit("/t/internationalization-localization/280");
selectText("#post_5 blockquote");
assert.ok(exists(".insert-quote"), "it shows the quote button");
assert.equal(
find(".quote-sharing").length,
0,
"it 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");
selectText("#post_5 blockquote");
assert.ok(exists(".quote-sharing"), "it shows the quote sharing options");
assert.ok(
exists(`.quote-sharing .btn[title='${I18n.t("share.twitter")}']`),
"it includes the twitter share button"
);
assert.ok(
exists(`.quote-sharing .btn[title='${I18n.t("share.email")}']`),
"it includes the email share button"
);
});
acceptance("Topic - Quote button - anonymous", {
loggedIn: false,
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");
selectText("#post_5 blockquote");
assert.ok(find(".quote-sharing"), "it shows the quote sharing options");
assert.ok(
exists(`.quote-sharing .btn[title='${I18n.t("share.twitter")}']`),
"it includes the twitter share button"
);
assert.ok(
exists(`.quote-sharing .btn[title='${I18n.t("share.email")}']`),
"it includes the email share button"
);
assert.equal(
find(".insert-quote").length,
0,
"it 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");
selectText("#post_5 blockquote");
assert.ok(exists(".quote-sharing"), "it shows the quote sharing options");
assert.ok(
exists(`.quote-sharing .btn[title='${I18n.t("share.twitter")}']`),
"it includes the twitter share button"
);
assert.equal(
find(".quote-share-label").length,
0,
"it 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");
selectText("#post_5 blockquote");
assert.equal(
find(".quote-sharing").length,
0,
"it does not show quote sharing"
);
assert.equal(
find(".insert-quote").length,
0,
"it does not show the quote button"
);
});