mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 10:13:40 +08:00
906f48694c
Whenever you get a bookmark notification, a mention notification, or click on a bookmark on a message in a long thread, we should ensure we always highlight and show the proper message. Before this fix, we would correctly load the thread, but would always start at the bottom. Internal ref. t/128103
85 lines
2.6 KiB
Ruby
85 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Bookmark message", type: :system do
|
|
fab!(:current_user) { Fabricate(:user) }
|
|
|
|
let(:chat_page) { PageObjects::Pages::Chat.new }
|
|
let(:channel_page) { PageObjects::Pages::ChatChannel.new }
|
|
let(:thread_page) { PageObjects::Pages::ChatThread.new }
|
|
let(:bookmark_modal) { PageObjects::Modals::Bookmark.new }
|
|
|
|
fab!(:category_channel_1) { Fabricate(:category_channel) }
|
|
fab!(:message_1) { Fabricate(:chat_message, chat_channel: category_channel_1) }
|
|
|
|
before do
|
|
chat_system_bootstrap
|
|
category_channel_1.add(current_user)
|
|
sign_in(current_user)
|
|
end
|
|
|
|
context "when desktop" do
|
|
it "allows to bookmark a message" do
|
|
chat_page.visit_channel(category_channel_1)
|
|
channel_page.bookmark_message(message_1)
|
|
|
|
bookmark_modal.fill_name("Check this out later")
|
|
bookmark_modal.select_preset_reminder(:next_month)
|
|
|
|
expect(channel_page).to have_bookmarked_message(message_1)
|
|
end
|
|
|
|
it "supports linking to a bookmark in a long thread" do
|
|
category_channel_1.update!(threading_enabled: true)
|
|
category_channel_1.add(current_user)
|
|
|
|
thread =
|
|
chat_thread_chain_bootstrap(
|
|
channel: category_channel_1,
|
|
users: [current_user, Fabricate(:user)],
|
|
messages_count: Chat::MessagesQuery::MAX_PAGE_SIZE + 1,
|
|
)
|
|
|
|
first_message = thread.replies.first
|
|
|
|
bookmark = Bookmark.create!(bookmarkable: first_message, user: current_user)
|
|
|
|
visit bookmark.bookmarkable.url
|
|
|
|
expect(thread_page).to have_bookmarked_message(first_message)
|
|
end
|
|
|
|
context "when the user has a bookmark auto_delete_preference" do
|
|
before do
|
|
current_user.user_option.update!(
|
|
bookmark_auto_delete_preference: Bookmark.auto_delete_preferences[:on_owner_reply],
|
|
)
|
|
end
|
|
|
|
it "is respected when the user creates a new bookmark" do
|
|
chat_page.visit_channel(category_channel_1)
|
|
channel_page.bookmark_message(message_1)
|
|
|
|
bookmark_modal.save
|
|
expect(channel_page).to have_bookmarked_message(message_1)
|
|
|
|
bookmark = Bookmark.find_by(bookmarkable: message_1, user: current_user)
|
|
expect(bookmark.auto_delete_preference).to eq(
|
|
Bookmark.auto_delete_preferences[:on_owner_reply],
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
context "when mobile", mobile: true do
|
|
it "allows to bookmark a message" do
|
|
chat_page.visit_channel(category_channel_1)
|
|
channel_page.bookmark_message(message_1)
|
|
|
|
bookmark_modal.fill_name("Check this out later")
|
|
bookmark_modal.select_preset_reminder(:next_month)
|
|
|
|
expect(channel_page).to have_bookmarked_message(message_1)
|
|
end
|
|
end
|
|
end
|