summaryrefslogtreecommitdiff
path: root/spec/services/members/invite_member_builder_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/members/invite_member_builder_spec.rb')
-rw-r--r--spec/services/members/invite_member_builder_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/services/members/invite_member_builder_spec.rb b/spec/services/members/invite_member_builder_spec.rb
new file mode 100644
index 00000000000..52de65364c4
--- /dev/null
+++ b/spec/services/members/invite_member_builder_spec.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Members::InviteMemberBuilder do
+ let_it_be(:source) { create(:group) }
+ let_it_be(:existing_member) { create(:group_member) }
+
+ let(:existing_members) { { existing_member.user.id => existing_member } }
+
+ describe '#execute' do
+ context 'when user record found by email' do
+ it 'returns member from existing members hash' do
+ expect(described_class.new(source, existing_member.user.email, existing_members).execute).to eq existing_member
+ end
+
+ it 'builds a new member' do
+ user = create(:user)
+
+ member = described_class.new(source, user.email, existing_members).execute
+
+ expect(member).to be_new_record
+ expect(member.user).to eq user
+ end
+ end
+ end
+
+ context 'when no existing users found by the email' do
+ it 'finds existing member' do
+ member = create(:group_member, :invited, source: source)
+
+ expect(described_class.new(source, member.invite_email, existing_members).execute).to eq member
+ end
+
+ it 'builds a new member' do
+ email = 'test@example.com'
+
+ member = described_class.new(source, email, existing_members).execute
+
+ expect(member).to be_new_record
+ expect(member.invite_email).to eq email
+ end
+ end
+end