From b3b9a80dfe344f8e34e36a3d179e3fab1205208a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Etienne=20Baqu=C3=A9?= Date: Tue, 10 Sep 2019 07:28:43 +0000 Subject: Provide urls for Merge Requests and Issue links --- app/helpers/releases_helper.rb | 38 ++++++++++++++++++++++++ app/views/projects/releases/index.html.haml | 2 +- spec/helpers/releases_helper_spec.rb | 46 +++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 app/helpers/releases_helper.rb create mode 100644 spec/helpers/releases_helper_spec.rb diff --git a/app/helpers/releases_helper.rb b/app/helpers/releases_helper.rb new file mode 100644 index 00000000000..4d9fe345edf --- /dev/null +++ b/app/helpers/releases_helper.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module ReleasesHelper + IMAGE_PATH = 'illustrations/releases.svg' + DOCUMENTATION_PATH = 'user/project/releases/index' + + def illustration + image_path(IMAGE_PATH) + end + + def help_page + help_page_path(DOCUMENTATION_PATH) + end + + def url_for_merge_requests + project_merge_requests_url(@project, params_for_issue_and_mr_paths) + end + + def url_for_issues + project_issues_url(@project, params_for_issue_and_mr_paths) + end + + def data_for_releases_page + { + project_id: @project.id, + illustration_path: illustration, + documentation_path: help_page, + merge_requests_url: url_for_merge_requests, + issues_url: url_for_issues + } + end + + private + + def params_for_issue_and_mr_paths + { scope: 'all', state: 'opened' } + end +end diff --git a/app/views/projects/releases/index.html.haml b/app/views/projects/releases/index.html.haml index 326b83c856e..4d5b8cc80f7 100644 --- a/app/views/projects/releases/index.html.haml +++ b/app/views/projects/releases/index.html.haml @@ -1,3 +1,3 @@ - page_title _('Releases') -#js-releases-page{ data: { project_id: @project.id, illustration_path: image_path('illustrations/releases.svg'), documentation_path: help_page_path('user/project/releases/index') } } +#js-releases-page{ data: data_for_releases_page } diff --git a/spec/helpers/releases_helper_spec.rb b/spec/helpers/releases_helper_spec.rb new file mode 100644 index 00000000000..ff820b3cc95 --- /dev/null +++ b/spec/helpers/releases_helper_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe ReleasesHelper do + describe '#illustration' do + it 'returns the correct image path' do + expect(helper.illustration).to match(/illustrations\/releases-(\w+)\.svg/) + end + end + + describe '#help_page' do + it 'returns the correct link to the help page' do + expect(helper.help_page).to include('user/project/releases/index') + end + end + + context 'url helpers' do + let(:project) { build(:project, namespace: create(:group)) } + + before do + helper.instance_variable_set(:@project, project) + end + + describe '#url_for_merge_requests' do + it 'returns the the correct link with the correct parameters' do + path = "#{project.group.path}/#{project.path}/merge_requests?scope=all&state=opened" + expect(helper.url_for_merge_requests).to include(path) + end + end + + describe '#url_for_issues' do + it 'returns the the correct link with the correct parameters' do + path = "#{project.group.path}/#{project.path}/issues?scope=all&state=opened" + expect(helper.url_for_issues).to include(path) + end + end + + describe '#data_for_releases_page' do + it 'has the needed data to display release blocks' do + keys = %i(project_id illustration_path documentation_path merge_requests_url issues_url) + expect(helper.data_for_releases_page.keys).to eq(keys) + end + end + end +end -- cgit v1.2.1