summaryrefslogtreecommitdiff
path: root/spec/models/todo_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
commit05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2 (patch)
tree11d0f2a6ec31c7793c184106cedc2ded3d9a2cc5 /spec/models/todo_spec.rb
parentec73467c23693d0db63a797d10194da9e72a74af (diff)
downloadgitlab-ce-05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2.tar.gz
Add latest changes from gitlab-org/gitlab@15-8-stable-eev15.8.0-rc42
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