mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 12:03:38 +08:00
6fb0f36ce1
We now show an options gear icon next to the bookmark name. When expanded we show the "delete bookmark when reminder sent" option. The value of this checkbox is saved in local storage for the user. If this is ticked, when a reminder is sent for the bookmark the bookmark itself is deleted. This is so people can use the reminder functionality by itself. Also remove the blue alert reminder section from the "Edit Bookmark" modal as it just added clutter, because the user can already see they had a reminder set: Adds a default false boolean column `delete_when_reminder_sent` to bookmarks.
55 lines
1.7 KiB
Ruby
55 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe BookmarkReminderNotificationHandler do
|
|
subject { described_class }
|
|
|
|
fab!(:user) { Fabricate(:user) }
|
|
|
|
before do
|
|
Discourse.redis.flushall
|
|
end
|
|
|
|
describe "#send_notification" do
|
|
fab!(:bookmark) do
|
|
Fabricate(:bookmark_next_business_day_reminder, user: user)
|
|
end
|
|
|
|
it "creates a bookmark reminder notification with the correct details" do
|
|
subject.send_notification(bookmark)
|
|
notif = bookmark.user.notifications.last
|
|
expect(notif.notification_type).to eq(Notification.types[:bookmark_reminder])
|
|
expect(notif.topic_id).to eq(bookmark.topic_id)
|
|
expect(notif.post_number).to eq(bookmark.post.post_number)
|
|
data = JSON.parse(notif.data)
|
|
expect(data["topic_title"]).to eq(bookmark.topic.title)
|
|
expect(data["display_username"]).to eq(bookmark.user.username)
|
|
expect(data["bookmark_name"]).to eq(bookmark.name)
|
|
end
|
|
|
|
it "clears the reminder" do
|
|
subject.send_notification(bookmark)
|
|
bookmark.reload
|
|
expect(bookmark.reload.no_reminder?).to eq(true)
|
|
end
|
|
|
|
context "when the delete_when_reminder_sent boolean is true " do
|
|
it "deletes the bookmark after the reminder gets sent" do
|
|
bookmark.update(delete_when_reminder_sent: true)
|
|
subject.send_notification(bookmark)
|
|
expect(Bookmark.find_by(id: bookmark.id)).to eq(nil)
|
|
end
|
|
end
|
|
|
|
context "when the post has been deleted" do
|
|
it "clears the reminder and does not send a notification" do
|
|
bookmark.post.trash!
|
|
bookmark.reload
|
|
subject.send_notification(bookmark)
|
|
expect(bookmark.reload.no_reminder?).to eq(true)
|
|
end
|
|
end
|
|
end
|
|
end
|