diff options
Diffstat (limited to 'spec/models/todo_spec.rb')
-rw-r--r-- | spec/models/todo_spec.rb | 62 |
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 |