otwarchive-symphonyarchive/spec/models/collection_item_spec.rb
2026-03-11 22:22:11 +00:00

94 lines
3.1 KiB
Ruby

require "spec_helper"
describe CollectionItem, :ready do
it "can be created" do
expect(create(:collection_item)).to be_valid
end
context "belonging to a bookmark" do
it "can be revealed without erroring" do
ci = CollectionItem.create(
item_id: 1,
item_type: "Bookmark",
collection_id: create(:collection).id,
unrevealed: true
)
ci.unrevealed = false
expect(ci.save).to be_truthy
end
end
describe "#save" do
let(:collection) { create(:collection) }
let(:work) { create(:work) }
context "as an archivist" do
let(:archivist) { create(:archivist) }
before do
User.current_user = archivist
end
context "when the archivist maintains the collection" do
let(:collection) { create(:collection, owner: archivist.default_pseud) }
it "automatically approves the item" do
item = create(:collection_item, item: work, collection: collection)
expect(item.approved?).to be true
end
it "sends an archivist added email" do
message_double = instance_double(ActionMailer::MessageDelivery, deliver_later: true)
expect(UserMailer).to receive(:archivist_added_to_collection_notification)
.and_return(message_double)
create(:collection_item, item: work, collection: collection)
end
context "when the item's creator has collection emails turned off" do
before do
work.users.first.preference.update!(collection_emails_off: true)
end
it "does not send an archivist added email" do
expect(UserMailer).not_to receive(:archivist_added_to_collection_notification)
create(:collection_item, item: work, collection: collection)
end
end
end
context "when the archivist does not maintain the collection" do
it "does not automatically approve the item" do
item = create(:collection_item, item: work, collection: collection)
expect(item.approved?).to be false
end
it "does not send an archivist added email" do
expect(UserMailer).not_to receive(:archivist_added_to_collection_notification)
create(:collection_item, item: work, collection: collection)
end
end
end
context "with no current user" do
it "does not send an archivist added email" do
expect(UserMailer).not_to receive(:archivist_added_to_collection_notification)
create(:collection_item, item: work, collection: collection)
end
end
end
describe "include_for_works scope" do
let(:collection) { create(:collection) }
let(:work) { create(:work, id: 63) }
let(:bookmark) { create(:bookmark, id: 63) }
before { bookmark.collections << collection }
it "returns the correct type item for bookmarks" do
expect(work.id).to eq(bookmark.id)
expect(collection.collection_items).not_to be_empty
expect(collection.collection_items.first.item_type).to eq("Bookmark")
expect(collection.collection_items.include_for_works.first.item_type).to eq("Bookmark")
end
end
end