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

49 lines
1.6 KiB
Ruby

require 'spec_helper'
require 'support/login_macros'
describe ExternalAuthor do
include LoginMacros
describe "find_or_invite" do
let(:unclaimed_user) { create(:user) }
let(:claimed_user) { create(:user) }
let(:unclaimed_ext_author) { create(:external_author, is_claimed: false) }
let(:unclaimed_user_author) { create(:external_author, email: unclaimed_user.email, is_claimed: false) }
let(:claimed_ext_author) { create(:external_author, user_id: claimed_user.id, is_claimed: true) }
let(:archivist) { create(:archivist) }
context "a user with a matching email exists" do
subject { unclaimed_user_author }
it "is automatically claimed by the user" do
subject.find_or_invite(archivist)
expect(subject.claimed?).to eq(true)
expect(subject.user_id).to eq(unclaimed_user.id)
end
end
context "a claimed external user with a matching email exists" do
subject { claimed_ext_author }
it "is automatically claimed by the corresponding user" do
expect(subject).to receive(:claim!).with(claimed_user)
subject.find_or_invite(archivist)
end
it "does NOT generate an invitation email" do
expect(Invitation).to_not receive(:new)
subject.find_or_invite(archivist)
end
end
context "no external author or user with a matching email exists" do
subject { unclaimed_ext_author }
it "generates an invitation email" do
expect(Invitation).to receive(:new).and_call_original
subject.find_or_invite(archivist)
end
end
end
end