Project issue tracker functions refactored
This commit is contained in:
parent
999fc2391b
commit
68a7ecdaaf
6 changed files with 52 additions and 29 deletions
|
@ -42,7 +42,7 @@ module IssuesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def url_for_issue(issue_id)
|
def url_for_issue(issue_id)
|
||||||
if @project.issues_tracker == Project.issues_tracker.default_value
|
if @project.used_default_issues_tracker?
|
||||||
url = project_issue_url project_id: @project, id: issue_id
|
url = project_issue_url project_id: @project, id: issue_id
|
||||||
else
|
else
|
||||||
url = Settings[:issues_tracker][@project.issues_tracker]["issues_url"]
|
url = Settings[:issues_tracker][@project.issues_tracker]["issues_url"]
|
||||||
|
@ -51,20 +51,10 @@ module IssuesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def title_for_issue(issue_id)
|
def title_for_issue(issue_id)
|
||||||
if issue = @project.issues.where(id: issue_id).first
|
if @project.used_default_issues_tracker? && issue = @project.issues.where(id: issue_id).first
|
||||||
issue.title
|
issue.title
|
||||||
else
|
else
|
||||||
""
|
""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def issue_exists?(issue_id)
|
|
||||||
return false if @project.nil?
|
|
||||||
|
|
||||||
if @project.issues_tracker == Project.issues_tracker.default_value
|
|
||||||
@project.issues.where(id: issue_id).first.present?
|
|
||||||
else
|
|
||||||
true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -205,6 +205,18 @@ class Project < ActiveRecord::Base
|
||||||
issues.tag_counts_on(:labels)
|
issues.tag_counts_on(:labels)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def issue_exists?(issue_id)
|
||||||
|
if used_default_issues_tracker?
|
||||||
|
self.issues.where(id: issue_id).first.present?
|
||||||
|
else
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def used_default_issues_tracker?
|
||||||
|
self.issues_tracker == Project.issues_tracker.default_value
|
||||||
|
end
|
||||||
|
|
||||||
def services
|
def services
|
||||||
[gitlab_ci_service].compact
|
[gitlab_ci_service].compact
|
||||||
end
|
end
|
||||||
|
|
|
@ -163,7 +163,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def reference_issue(identifier)
|
def reference_issue(identifier)
|
||||||
if issue_exists? identifier
|
if @project.issue_exists? identifier
|
||||||
url = url_for_issue(identifier)
|
url = url_for_issue(identifier)
|
||||||
title = title_for_issue(identifier)
|
title = title_for_issue(identifier)
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,10 @@ FactoryGirl.define do
|
||||||
creator
|
creator
|
||||||
end
|
end
|
||||||
|
|
||||||
|
factory :redmine_project, parent: :project do
|
||||||
|
issues_tracker { "redmine" }
|
||||||
|
end
|
||||||
|
|
||||||
factory :group do
|
factory :group do
|
||||||
sequence(:name) { |n| "group#{n}" }
|
sequence(:name) { |n| "group#{n}" }
|
||||||
path { name.downcase.gsub(/\s/, '_') }
|
path { name.downcase.gsub(/\s/, '_') }
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe IssuesTracker do
|
|
||||||
let(:project) { double('project') }
|
|
||||||
|
|
||||||
before do
|
|
||||||
@project = project
|
|
||||||
project.stub(repository: stub(ref_names: ['master', 'foo/bar/baz', 'v1.0.0', 'v2.0.0']))
|
|
||||||
project.stub(path_with_namespace: 'gitlab/gitlab-ci')
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns url for issue' do
|
|
||||||
ololo
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -190,4 +190,37 @@ describe Project do
|
||||||
Project.new(path: "empty").repository.should be_nil
|
Project.new(path: "empty").repository.should be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe :issue_exists? do
|
||||||
|
let(:project) { create(:project) }
|
||||||
|
let(:existed_issue) { create(:issue, project: project) }
|
||||||
|
let(:not_existed_issue) { create(:issue) }
|
||||||
|
let(:ext_project) { create(:redmine_project) }
|
||||||
|
|
||||||
|
it "should be true or if used internal tracker and issue exists" do
|
||||||
|
project.issue_exists?(existed_issue.id).should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be false or if used internal tracker and issue not exists" do
|
||||||
|
project.issue_exists?(not_existed_issue.id).should be_false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should always be true if used other tracker" do
|
||||||
|
ext_project.issue_exists?(rand(100)).should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe :used_default_issues_tracker? do
|
||||||
|
let(:project) { create(:project) }
|
||||||
|
let(:ext_project) { create(:redmine_project) }
|
||||||
|
|
||||||
|
it "should be true if used internal tracker" do
|
||||||
|
project.used_default_issues_tracker?.should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be false if used other tracker" do
|
||||||
|
ext_project.used_default_issues_tracker?.should be_false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue