summaryrefslogtreecommitdiff
path: root/spec/models/todo_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/todo_spec.rb')
-rw-r--r--spec/models/todo_spec.rb62
1 files changed, 55 insertions, 7 deletions
diff --git a/spec/models/todo_spec.rb b/spec/models/todo_spec.rb
index 221f09dd87f..8669db4af16 100644
--- a/spec/models/todo_spec.rb
+++ b/spec/models/todo_spec.rb
@@ -175,6 +175,15 @@ RSpec.describe Todo do
end
describe '#target_reference' do
+ shared_examples 'returns full_path' do
+ specify do
+ subject.target = target
+ subject.action = Todo::MEMBER_ACCESS_REQUESTED
+
+ expect(subject.target_reference).to eq target.full_path
+ end
+ end
+
it 'returns commit full reference with short id' do
project = create(:project, :repository)
commit = project.commit
@@ -193,13 +202,10 @@ RSpec.describe Todo do
end
context 'when target is member access requested' do
- it 'returns group full path' do
- group = create(:group)
-
- subject.target = group
- subject.action = Todo::MEMBER_ACCESS_REQUESTED
-
- expect(subject.target_reference).to eq group.full_path
+ %i[project group].each do |target_type|
+ it_behaves_like 'returns full_path' do
+ let(:target) { create(target_type, :public) }
+ end
end
end
end
@@ -525,4 +531,46 @@ RSpec.describe Todo do
expect(described_class.for_internal_notes).to contain_exactly(todo)
end
end
+
+ describe '#access_request_url' do
+ shared_examples 'returns member access requests tab url/path' do
+ it 'returns group access requests tab url/path if target is group' do
+ group = create(:group)
+ subject.target = group
+
+ expect(subject.access_request_url(only_path: only_path)).to eq(Gitlab::Routing.url_helpers.group_group_members_url(group, tab: 'access_requests', only_path: only_path))
+ end
+
+ it 'returns project access requests tab url/path if target is project' do
+ project = create(:project)
+ subject.target = project
+
+ expect(subject.access_request_url(only_path: only_path)).to eq(Gitlab::Routing.url_helpers.project_project_members_url(project, tab: 'access_requests', only_path: only_path))
+ end
+
+ it 'returns empty string if target is neither group nor project' do
+ subject.target = issue
+
+ expect(subject.access_request_url(only_path: only_path)).to eq("")
+ end
+ end
+
+ context 'when only_path param is false' do
+ it_behaves_like 'returns member access requests tab url/path' do
+ let_it_be(:only_path) { false }
+ end
+ end
+
+ context 'when only_path param is nil' do
+ it_behaves_like 'returns member access requests tab url/path' do
+ let_it_be(:only_path) { nil }
+ end
+ end
+
+ context 'when only_path param is true' do
+ it_behaves_like 'returns member access requests tab url/path' do
+ let_it_be(:only_path) { true }
+ end
+ end
+ end
end