FIX: Add bookmark quick access tests and fix username (#16934)
The commit fcc2e7ebbf
to promote
polymorphic bookmarks did not correctly set the username for
the quick access bookmark menu based on the new serializer
values, so the username is not being shown in the bookmark
quick access menu. This commit fixes it, and also adds additional
tests for that menu and updates the user fixtures to reflect
the current state of the bookmarks endpoint.
This commit is contained in:
parent
d065ec0f7b
commit
e8ca927b12
|
@ -70,7 +70,7 @@ createWidgetFrom(QuickAccessPanel, "quick-access-bookmarks", {
|
|||
href,
|
||||
title: bookmark.name,
|
||||
content: bookmark.title,
|
||||
username: bookmark.post_user_username,
|
||||
username: bookmark.user.username,
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
@ -56,13 +60,13 @@ acceptance("User's bookmarks - reminder", function (needs) {
|
|||
test("bookmarks with reminders have a clear reminder option", async function (assert) {
|
||||
await visit("/u/eviltrout/activity/bookmarks");
|
||||
|
||||
assert.ok(exists(".bookmark-reminder"));
|
||||
assert.strictEqual(queryAll(".bookmark-reminder").length, 2);
|
||||
|
||||
const dropdown = selectKit(".bookmark-actions-dropdown");
|
||||
await dropdown.expand();
|
||||
await dropdown.selectRowByValue("clear_reminder");
|
||||
|
||||
assert.not(exists(".bookmark-reminder"));
|
||||
assert.strictEqual(queryAll(".bookmark-reminder").length, 1);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -421,18 +421,23 @@ export default {
|
|||
user_bookmark_list: {
|
||||
bookmarks: [
|
||||
{
|
||||
excerpt: "Here this is my new topic where I yell.",
|
||||
tags: [],
|
||||
id: 576,
|
||||
created_at: "2020-04-07T05:30:40.446Z",
|
||||
topic_id: 119,
|
||||
linked_post_number: 1,
|
||||
updated_at: "2020-04-07T05:30:40.446Z",
|
||||
name: "test",
|
||||
reminder_at: null,
|
||||
reminder_at_ics_start: null,
|
||||
reminder_at_ics_end: null,
|
||||
pinned: false,
|
||||
title: "Yelling topic title :/",
|
||||
fancy_title: "Yelling topic title :/",
|
||||
excerpt: "Here this is my new topic where I yell.",
|
||||
bookmarkable_id: 281,
|
||||
bookmarkable_type: "Post",
|
||||
bookmarkable_url: "http://localhost:4200/t/yelling-topic-title/119",
|
||||
name: "test",
|
||||
reminder_at: null,
|
||||
title: "Yelling topic title :/",
|
||||
tags: [],
|
||||
topic_id: 119,
|
||||
linked_post_number: 1,
|
||||
deleted: false,
|
||||
hidden: false,
|
||||
category_id: 1,
|
||||
|
@ -440,12 +445,37 @@ export default {
|
|||
archived: false,
|
||||
archetype: "regular",
|
||||
highest_post_number: 5,
|
||||
last_read_post_number: 3,
|
||||
bumped_at: "2020-04-06T05:20:00.172Z",
|
||||
slug: "yelling-topic-title",
|
||||
post_user_username: "someguy",
|
||||
post_user_name: "Some Guy",
|
||||
post_user_avatar_template:
|
||||
"/letter_avatar/someguy/{size}/3_f9720745f5ce6dfc2b5641fca999d934.png",
|
||||
user: {
|
||||
id: 1,
|
||||
username: "someguy",
|
||||
name: "Some Guy",
|
||||
avatar_template: "/user_avatar/127.0.0.1/someguy/{size}/918_2.png",
|
||||
}
|
||||
},
|
||||
{
|
||||
id: 4857,
|
||||
created_at: "2022-05-07T05:30:40.446Z",
|
||||
updated_at: "2022-05-27T05:30:40.446Z",
|
||||
name: "test",
|
||||
reminder_at: "2022-05-29T22:00:00.000Z",
|
||||
reminder_at_ics_start: "20220529T220000Z",
|
||||
reminder_at_ics_end: "20220529T230000Z",
|
||||
pinned: false,
|
||||
title: "Channel Name",
|
||||
fancy_title: "Channel Name",
|
||||
excerpt: "some excerpt",
|
||||
bookmarkable_id: 2437,
|
||||
bookmarkable_type: "ChatMessage",
|
||||
bookmarkable_url: "http://localhost:4200/chat/message/2437",
|
||||
user: {
|
||||
id: 4343,
|
||||
username: "otherperson",
|
||||
name: "Other Person",
|
||||
avatar_template: "/user_avatar/127.0.0.1/otherperson/{size}/918_2.png",
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
@ -160,10 +160,13 @@ discourseModule(
|
|||
async test(assert) {
|
||||
await click(".user-bookmarks-link");
|
||||
|
||||
const bookmark = query(".quick-access-panel li a");
|
||||
assert.ok(bookmark);
|
||||
const allBookmarks = queryAll(".quick-access-panel li a");
|
||||
const bookmark = allBookmarks[0];
|
||||
|
||||
assert.ok(bookmark.href.includes("/t/yelling-topic-title/119"));
|
||||
assert.ok(
|
||||
bookmark.href.includes("/t/yelling-topic-title/119"),
|
||||
"the Post bookmark should have a link to the topic"
|
||||
);
|
||||
assert.ok(
|
||||
bookmark.innerHTML.includes("someguy"),
|
||||
"should include the last poster's username"
|
||||
|
@ -172,6 +175,10 @@ discourseModule(
|
|||
bookmark.innerHTML.match(/<img.*class="emoji".*>/),
|
||||
"should correctly render emoji in bookmark title"
|
||||
);
|
||||
assert.ok(
|
||||
bookmark.innerHTML.includes("d-icon-bookmark"),
|
||||
"should use the correct icon based on no reminder_at present"
|
||||
);
|
||||
|
||||
const routeToStub = sinon.stub(DiscourseURL, "routeTo");
|
||||
await click(".user-bookmarks-link");
|
||||
|
@ -179,6 +186,18 @@ discourseModule(
|
|||
routeToStub.calledWith(queryAll(".user-bookmarks-link").data("url")),
|
||||
"a second click should redirect to the full bookmarks page"
|
||||
);
|
||||
|
||||
const nonPostBookmarkableBookmark = allBookmarks[1];
|
||||
assert.ok(
|
||||
nonPostBookmarkableBookmark.href.includes("chat/message/2437"),
|
||||
"bookmarkable_type that is not Post or Topic should use bookmarkable_url for the item link"
|
||||
);
|
||||
assert.ok(
|
||||
nonPostBookmarkableBookmark.innerHTML.includes(
|
||||
"d-icon-discourse-bookmark-clock"
|
||||
),
|
||||
"should use the correct icon based on reminder_at present"
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue