summaryrefslogtreecommitdiff
path: root/spec/models/member_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/member_spec.rb')
-rw-r--r--spec/models/member_spec.rb41
1 files changed, 21 insertions, 20 deletions
diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb
index 0ebccf1cb65..4b28f619d94 100644
--- a/spec/models/member_spec.rb
+++ b/spec/models/member_spec.rb
@@ -303,7 +303,7 @@ RSpec.describe Member do
@requested_member = project.requesters.find_by(user_id: requested_user.id)
accepted_request_user = create(:user).tap { |u| project.request_access(u) }
- @accepted_request_member = project.requesters.find_by(user_id: accepted_request_user.id).tap { |m| m.accept_request }
+ @accepted_request_member = project.requesters.find_by(user_id: accepted_request_user.id).tap { |m| m.accept_request(@owner_user) }
@member_with_minimal_access = create(:group_member, :minimal_access, source: group)
end
@@ -777,18 +777,25 @@ RSpec.describe Member do
describe '#accept_request' do
let(:member) { create(:project_member, requested_at: Time.current.utc) }
- it { expect(member.accept_request).to be_truthy }
+ it { expect(member.accept_request(@owner_user)).to be_truthy }
+ it { expect(member.accept_request(nil)).to be_truthy }
it 'clears requested_at' do
- member.accept_request
+ member.accept_request(@owner_user)
expect(member.requested_at).to be_nil
end
+ it 'saves the approving user' do
+ member.accept_request(@owner_user)
+
+ expect(member.created_by).to eq(@owner_user)
+ end
+
it 'calls #after_accept_request' do
expect(member).to receive(:after_accept_request)
- member.accept_request
+ member.accept_request(@owner_user)
end
end
@@ -799,33 +806,27 @@ RSpec.describe Member do
end
describe '#request?' do
- context 'when request for project' do
- subject { create(:project_member, requested_at: Time.current.utc) }
+ shared_examples 'calls notification service and todo service' do
+ subject { create(source_type, requested_at: Time.current.utc) }
- it 'calls notification service but not todo service' do
+ specify do
expect_next_instance_of(NotificationService) do |instance|
expect(instance).to receive(:new_access_request)
end
- expect(TodoService).not_to receive(:new)
+ expect_next_instance_of(TodoService) do |instance|
+ expect(instance).to receive(:create_member_access_request_todos)
+ end
is_expected.to be_request
end
end
- context 'when request for group' do
- subject { create(:group_member, requested_at: Time.current.utc) }
-
- it 'calls notification and todo service' do
- expect_next_instance_of(NotificationService) do |instance|
- expect(instance).to receive(:new_access_request)
- end
-
- expect_next_instance_of(TodoService) do |instance|
- expect(instance).to receive(:create_member_access_request)
+ context 'when requests for project and group are raised' do
+ %i[project_member group_member].each do |source_type|
+ it_behaves_like 'calls notification service and todo service' do
+ let_it_be(:source_type) { source_type }
end
-
- is_expected.to be_request
end
end
end