mirror of
https://github.com/discourse/discourse.git
synced 2025-02-05 19:11:13 +00:00
e58e7a49f5
Followup 76c56c82845b4fce63c6f1cdf4ac3935bf1747e7 The change introduced above made it so the expired bookmark reminders were cleared when using the bulk action menu for bookmarks. However this also affected clearing reminders for bookmarks when sending notifications. When clearing bookmark reminders after sending notifications, we take into account the auto delete preference: * never - The bookmark `reminder_at` date should not be cleared, and the bookmark is kept. * clear_reminder - The bookmark `reminder_at` date is cleared and the bookmark is kept The `never` option made it so "expired" bookmark reminder show on the user's bookmark list. This commit fixes the change from the other commit and only forces clearing of `reminder_at` if using the bookmark bulk action service.
54 lines
2.0 KiB
Ruby
54 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe BookmarksBulkAction do
|
|
fab!(:user) { Fabricate(:user, refresh_auto_groups: true) }
|
|
fab!(:user_2) { Fabricate(:user, refresh_auto_groups: true) }
|
|
fab!(:bookmark_1) { Fabricate(:bookmark, user: user) }
|
|
fab!(:bookmark_2) { Fabricate(:bookmark, user: user) }
|
|
|
|
describe "#delete" do
|
|
describe "when user is not the bookmark owner" do
|
|
it "does NOT delete the bookmarks" do
|
|
bba = BookmarksBulkAction.new(user_2, [bookmark_1.id, bookmark_2.id], type: "delete")
|
|
expect { bba.perform! }.to raise_error Discourse::InvalidAccess
|
|
|
|
expect(Bookmark.exists?(bookmark_1.id)).to eq(true)
|
|
expect(Bookmark.exists?(bookmark_2.id)).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe "when user is the bookmark owner" do
|
|
it "deletes the bookmarks" do
|
|
bba = BookmarksBulkAction.new(user, [bookmark_1.id, bookmark_2.id], type: "delete")
|
|
bba.perform!
|
|
|
|
expect(Bookmark.exists?(bookmark_1.id)).to eq(false)
|
|
expect(Bookmark.exists?(bookmark_2.id)).to eq(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#clear_reminder" do
|
|
fab!(:bookmark_with_reminder) { Fabricate(:bookmark_next_business_day_reminder, user: user) }
|
|
|
|
describe "when user is not the bookmark owner" do
|
|
it "does not clear the reminder" do
|
|
bba = BookmarksBulkAction.new(user_2, [bookmark_with_reminder], type: "clear_reminder")
|
|
expect { bba.perform! }.to raise_error Discourse::InvalidAccess
|
|
expect(Bookmark.find_by_id(bookmark_with_reminder).reminder_set_at).to_not be_nil
|
|
end
|
|
end
|
|
|
|
describe "when user is the bookmark owner" do
|
|
it "clears the bookmark reminders, including expired reminders" do
|
|
expect do
|
|
bba = BookmarksBulkAction.new(user, [bookmark_with_reminder.id], type: "clear_reminder")
|
|
bba.perform!
|
|
end.to change { bookmark_with_reminder.reload.reminder_set_at }.to(nil).and change {
|
|
bookmark_with_reminder.reload.reminder_at
|
|
}.to(nil)
|
|
end
|
|
end
|
|
end
|
|
end
|