diff options
Diffstat (limited to 'spec/helpers/merge_requests_helper_spec.rb')
-rw-r--r-- | spec/helpers/merge_requests_helper_spec.rb | 81 |
1 files changed, 76 insertions, 5 deletions
diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb index 25f23826648..10681af5f7e 100644 --- a/spec/helpers/merge_requests_helper_spec.rb +++ b/spec/helpers/merge_requests_helper_spec.rb @@ -22,24 +22,51 @@ describe MergeRequestsHelper do end describe '#issues_sentence' do + let(:project) { create :project } + subject { issues_sentence(issues) } let(:issues) do - [build(:issue, iid: 1), build(:issue, iid: 2), build(:issue, iid: 3)] + [build(:issue, iid: 2, project: project), + build(:issue, iid: 3, project: project), + build(:issue, iid: 1, project: project)] end - it { is_expected.to eq('#1, #2, and #3') } + it do + @project = project + + is_expected.to eq('#1, #2, and #3') + end context 'for JIRA issues' do let(:project) { create(:empty_project) } let(:issues) do [ - ExternalIssue.new('JIRA-123', project), ExternalIssue.new('JIRA-456', project), - ExternalIssue.new('FOOBAR-7890', project) + ExternalIssue.new('FOOBAR-7890', project), + ExternalIssue.new('JIRA-123', project) ] end - it { is_expected.to eq('FOOBAR-7890, JIRA-123, and JIRA-456') } + it do + @project = project + is_expected.to eq('FOOBAR-7890, JIRA-123, and JIRA-456') + end + end + + context 'for issues from multiple namespaces' do + let(:project) { create(:project) } + let(:other_project) { create(:project) } + let(:issues) do + [build(:issue, iid: 2, project: project), + build(:issue, iid: 3, project: other_project), + build(:issue, iid: 1, project: project)] + end + + it do + @project = project + + is_expected.to eq("#1, #2, and #{other_project.namespace.path}/#{other_project.path}#3") + end end end @@ -122,6 +149,50 @@ describe MergeRequestsHelper do end end + describe '#target_projects' do + let(:project) { create(:empty_project) } + let(:fork_project) { create(:empty_project, forked_from_project: project) } + + context 'when target project has enabled merge requests' do + it 'returns the forked_from project' do + expect(target_projects(fork_project)).to contain_exactly(project, fork_project) + end + end + + context 'when target project has disabled merge requests' do + it 'returns the forked project' do + project.project_feature.update(merge_requests_access_level: 0) + + expect(target_projects(fork_project)).to contain_exactly(fork_project) + end + end + end + + describe '#new_mr_path_from_push_event' do + subject(:url_params) { URI.decode_www_form(new_mr_path_from_push_event(event)).to_h } + let(:user) { create(:user) } + let(:project) { create(:empty_project, creator: user) } + let(:fork_project) { create(:project, forked_from_project: project, creator: user) } + let(:event) do + push_data = Gitlab::DataBuilder::Push.build_sample(fork_project, user) + create(:event, :pushed, project: fork_project, target: fork_project, author: user, data: push_data) + end + + context 'when target project has enabled merge requests' do + it 'returns link to create merge request on source project' do + expect(url_params['merge_request[target_project_id]'].to_i).to eq(project.id) + end + end + + context 'when target project has disabled merge requests' do + it 'returns link to create merge request on forked project' do + project.project_feature.update(merge_requests_access_level: 0) + + expect(url_params['merge_request[target_project_id]'].to_i).to eq(fork_project.id) + end + end + end + describe '#mr_issues_mentioned_but_not_closing' do let(:user_1) { create(:user) } let(:user_2) { create(:user) } |