49 lines
1.6 KiB
Ruby
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
|