discourse/spec/lib/bookmarks_bulk_action_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

54 lines
2.0 KiB
Ruby
Raw Normal View History

# 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