Provide urls for Merge Requests and Issue links

This commit is contained in:
Etienne Baqué 2019-09-10 07:28:43 +00:00 committed by Lin Jen-Shin
parent 8db75fec1d
commit b3b9a80dfe
3 changed files with 85 additions and 1 deletions

View file

@ -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

View file

@ -1,3 +1,3 @@
- page_title _('Releases') - 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 }

View file

@ -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