discourse/test/javascripts/acceptance/topic-test.js.es6

244 lines
6.3 KiB
Plaintext
Raw Normal View History

import { acceptance } from "helpers/qunit-helpers";
acceptance("Topic", { loggedIn: true });
2017-06-15 01:57:58 +08:00
QUnit.test("Share Popup", assert => {
visit("/t/internationalization-localization/280");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(!exists("#share-link.visible"), "it is not visible");
});
click("button[data-share-url]");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(exists("#share-link.visible"), "it shows the popup");
});
2018-06-15 23:03:24 +08:00
click("#share-link .close-share");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(!exists("#share-link.visible"), "it closes the popup");
});
2017-05-04 16:49:12 +08:00
// TODO tgxworld This fails on Travis but we need to push the security fix out
// first.
// click('#topic-footer-buttons .btn.create');
// fillIn('.d-editor-input', '<h2><div data-share-url="something">Click</button><h2>');
//
// click('#reply-control .btn.create');
// click('h2 div[data-share-url]');
//
// andThen(() => {
// ok(!exists('#share-link.visible'), 'it does not show the popup');
// });
});
2017-06-15 01:57:58 +08:00
QUnit.test("Showing and hiding the edit controls", assert => {
visit("/t/internationalization-localization/280");
2018-06-15 23:03:24 +08:00
click("#topic-title .d-icon-pencil");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(exists("#edit-title"), "it shows the editing controls");
assert.ok(
!exists(".title-wrapper .remove-featured-link"),
"link to remove featured link is not shown"
);
});
2018-06-15 23:03:24 +08:00
fillIn("#edit-title", "this is the new title");
click("#topic-title .cancel-edit");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(!exists("#edit-title"), "it hides the editing controls");
});
});
2017-06-15 01:57:58 +08:00
QUnit.test("Updating the topic title and category", assert => {
2018-06-15 23:03:24 +08:00
const categoryChooser = selectKit(".title-wrapper .category-chooser");
visit("/t/internationalization-localization/280");
2018-06-15 23:03:24 +08:00
click("#topic-title .d-icon-pencil");
fillIn("#edit-title", "this is the new title");
categoryChooser.expand().selectRowByValue(4);
2018-06-15 23:03:24 +08:00
click("#topic-title .submit-edit");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.equal(
find("#topic-title .badge-category").text(),
"faq",
"it displays the new category"
);
assert.equal(
find(".fancy-title")
.text()
.trim(),
"this is the new title",
"it displays the new title"
);
});
});
2017-06-15 01:57:58 +08:00
QUnit.test("Marking a topic as wiki", assert => {
2018-06-16 00:18:45 +08:00
// prettier-ignore
server.put("/posts/398/wiki", () => { // eslint-disable-line no-undef
2018-06-15 23:03:24 +08:00
return [200, { "Content-Type": "application/json" }, {}];
});
visit("/t/internationalization-localization/280");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(find("a.wiki").length === 0, "it does not show the wiki icon");
});
2018-06-15 23:03:24 +08:00
click(".topic-post:eq(0) button.show-more-actions");
click(".topic-post:eq(0) button.show-post-admin-menu");
click(".btn.wiki");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(find("a.wiki").length === 1, "it shows the wiki icon");
});
});
2017-06-15 01:57:58 +08:00
QUnit.test("Reply as new topic", assert => {
visit("/t/internationalization-localization/280");
click("button.share:eq(0)");
click(".reply-as-new-topic a");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(exists(".d-editor-input"), "the composer input is visible");
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
find(".d-editor-input")
.val()
.trim(),
`Continuing the discussion from [Internationalization / localization](${
window.location.origin
}/t/internationalization-localization/280):`,
"it fills composer with the ring string"
);
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
selectKit(".category-chooser")
.header()
.value(),
"2",
"it fills category selector with the right category"
);
});
});
2017-06-15 01:57:58 +08:00
QUnit.test("Reply as new message", assert => {
visit("/t/pm-for-testing/12");
click("button.share:eq(0)");
click(".reply-as-new-topic a");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(exists(".d-editor-input"), "the composer input is visible");
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
find(".d-editor-input")
.val()
.trim(),
`Continuing the discussion from [PM for testing](${
window.location.origin
}/t/pm-for-testing/12):`,
"it fills composer with the ring string"
);
2018-06-15 23:03:24 +08:00
const targets = find(".item span", ".composer-fields");
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
$(targets[0]).text(),
"someguy",
"it fills up the composer with the right user to start the PM to"
);
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
$(targets[1]).text(),
"test",
"it fills up the composer with the right user to start the PM to"
);
2017-06-15 01:57:58 +08:00
assert.equal(
2018-06-15 23:03:24 +08:00
$(targets[2]).text(),
"Group",
"it fills up the composer with the right group to start the PM to"
);
});
});
2017-06-05 20:06:23 +08:00
QUnit.test("Visit topic routes", assert => {
visit("/t/12");
andThen(() => {
assert.equal(
2018-06-15 23:03:24 +08:00
find(".fancy-title")
.text()
.trim(),
"PM for testing",
"it routes to the right topic"
);
});
visit("/t/280/20");
andThen(() => {
assert.equal(
2018-06-15 23:03:24 +08:00
find(".fancy-title")
.text()
.trim(),
"Internationalization / localization",
"it routes to the right topic"
);
});
});
2017-06-15 01:57:58 +08:00
QUnit.test("Updating the topic title with emojis", assert => {
2017-06-05 20:06:23 +08:00
visit("/t/internationalization-localization/280");
2018-06-15 23:03:24 +08:00
click("#topic-title .d-icon-pencil");
2017-06-05 20:06:23 +08:00
2018-06-15 23:03:24 +08:00
fillIn("#edit-title", "emojis title :bike: :blonde_woman:t6:");
2017-06-05 20:06:23 +08:00
2018-06-15 23:03:24 +08:00
click("#topic-title .submit-edit");
2017-06-05 20:06:23 +08:00
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.equal(
find(".fancy-title")
.html()
.trim(),
'emojis title <img src="/images/emoji/emoji_one/bike.png?v=5" title="bike" alt="bike" class="emoji"> <img src="/images/emoji/emoji_one/blonde_woman/6.png?v=5" title="blonde_woman:t6" alt="blonde_woman:t6" class="emoji">',
"it displays the new title with emojis"
);
2017-06-05 20:06:23 +08:00
});
});
acceptance("Topic featured links", {
loggedIn: true,
settings: {
topic_featured_link_enabled: true,
max_topic_title_length: 80
}
});
QUnit.test("remove featured link", assert => {
visit("/t/299/1");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(
exists(".title-wrapper .topic-featured-link"),
"link is shown with topic title"
);
});
2018-06-15 23:03:24 +08:00
click(".title-wrapper .edit-topic");
andThen(() => {
2018-06-15 23:03:24 +08:00
assert.ok(
exists(".title-wrapper .remove-featured-link"),
"link to remove featured link"
);
});
// this test only works in a browser:
// click('.title-wrapper .remove-featured-link');
// click('.title-wrapper .submit-edit');
// andThen(() => {
// assert.ok(!exists('.title-wrapper .topic-featured-link'), 'link is gone');
// });
});