Using gitlab url to build links for gitlab issue tracker and add a spec. Fix rubocop warnings in path.

This commit is contained in:
Marin Jankovski 2015-02-23 12:38:30 -08:00
parent a4118ca445
commit b0dfe434c6
4 changed files with 89 additions and 16 deletions

View file

@ -27,14 +27,20 @@ class GitlabIssueTrackerService < IssueTrackerService
end
def project_url
namespace_project_issues_path(project.namespace, project)
"#{gitlab_url}#{namespace_project_issues_path(project.namespace, project)}"
end
def new_issue_url
new_namespace_project_issue_path namespace_id: project.namespace, project_id: project
"#{gitlab_url}#{new_namespace_project_issue_path(namespace_id: project.namespace, project_id: project)}"
end
def issue_url(iid)
"#{Gitlab.config.gitlab.url}#{namespace_project_issue_path(namespace_id: project.namespace, project_id: project, id: iid)}"
"#{gitlab_url}#{namespace_project_issue_path(namespace_id: project.namespace, project_id: project, id: iid)}"
end
private
def gitlab_url
Gitlab.config.gitlab.relative_url_root.chomp("/") if Gitlab.config.gitlab.relative_url_root
end
end

View file

@ -269,16 +269,23 @@ Gitlab::Application.routes.draw do
post '/preview/*id', to: 'blob#preview', constraints: { id: /.+/ }, as: 'preview_blob'
scope do
get('/blob/*id/diff',
to: 'blob#diff',
constraints: { id: /.+/, format: false },
as: :blob_diff)
get('/blob/*id',
to: 'blob#show',
constraints: { id: /.+/, format: false }, as: :blob)
delete('/blob/*id',
to: 'blob#destroy',
constraints: { id: /.+/, format: false })
get(
'/blob/*id/diff',
to: 'blob#diff',
constraints: { id: /.+/, format: false },
as: :blob_diff
)
get(
'/blob/*id',
to: 'blob#show',
constraints: { id: /.+/, format: false },
as: :blob
)
delete(
'/blob/*id',
to: 'blob#destroy',
constraints: { id: /.+/, format: false }
)
end
scope do

View file

@ -474,7 +474,7 @@ describe GitlabMarkdownHelper do
# First issue link
expect(groups[1]).
to match(/href="#{namespace_project_issue_url(project.namespace, project, issues[0])}"/)
to match(/href="#{namespace_project_issue_path(project.namespace, project, issues[0])}"/)
expect(groups[1]).to match(/##{issues[0].iid}$/)
# Internal commit link
@ -483,7 +483,7 @@ describe GitlabMarkdownHelper do
# Second issue link
expect(groups[3]).
to match(/href="#{namespace_project_issue_url(project.namespace, project, issues[1])}"/)
to match(/href="#{namespace_project_issue_path(project.namespace, project, issues[1])}"/)
expect(groups[3]).to match(/##{issues[1].iid}$/)
# Trailing commit link
@ -611,7 +611,7 @@ describe GitlabMarkdownHelper do
end
it "should generate absolute urls for refs" do
expect(markdown("##{issue.iid}")).to include(namespace_project_issue_url(project.namespace, project, issue))
expect(markdown("##{issue.iid}")).to include(namespace_project_issue_path(project.namespace, project, issue))
end
it "should generate absolute urls for emoji" do

View file

@ -0,0 +1,60 @@
# == Schema Information
#
# Table name: services
#
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# project_id :integer
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# properties :text
# template :boolean default(FALSE)
#
require 'spec_helper'
describe GitlabIssueTrackerService do
describe "Associations" do
it { is_expected.to belong_to :project }
it { is_expected.to have_one :service_hook }
end
describe 'project and issue urls' do
let(:project) { create(:project) }
context 'with absolute urls' do
before do
@service = project.create_gitlab_issue_tracker_service(active: true)
end
after do
@service.destroy!
end
it 'should give the correct path' do
expect(@service.project_url).to eq("/#{project.path_with_namespace}/issues")
expect(@service.new_issue_url).to eq("/#{project.path_with_namespace}/issues/new")
expect(@service.issue_url(432)).to eq("/#{project.path_with_namespace}/issues/432")
end
end
context 'with enabled relative urls' do
before do
Settings.gitlab.stub(:relative_url_root).and_return("/gitlab/root")
@service = project.create_gitlab_issue_tracker_service(active: true)
end
after do
@service.destroy!
end
it 'should give the correct path' do
expect(@service.project_url).to eq("/gitlab/root/#{project.path_with_namespace}/issues")
expect(@service.new_issue_url).to eq("/gitlab/root/#{project.path_with_namespace}/issues/new")
expect(@service.issue_url(432)).to eq("/gitlab/root/#{project.path_with_namespace}/issues/432")
end
end
end
end