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
|
||||
|
||||
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
|
||||
else
|
||||
url = Settings[:issues_tracker][@project.issues_tracker]["issues_url"]
|
||||
|
@ -51,20 +51,10 @@ module IssuesHelper
|
|||
end
|
||||
|
||||
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
|
||||
else
|
||||
""
|
||||
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
|
||||
|
|
|
@ -205,6 +205,18 @@ class Project < ActiveRecord::Base
|
|||
issues.tag_counts_on(:labels)
|
||||
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
|
||||
[gitlab_ci_service].compact
|
||||
end
|
||||
|
|
|
@ -163,7 +163,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def reference_issue(identifier)
|
||||
if issue_exists? identifier
|
||||
if @project.issue_exists? identifier
|
||||
url = url_for_issue(identifier)
|
||||
title = title_for_issue(identifier)
|
||||
|
||||
|
|
|
@ -29,6 +29,10 @@ FactoryGirl.define do
|
|||
creator
|
||||
end
|
||||
|
||||
factory :redmine_project, parent: :project do
|
||||
issues_tracker { "redmine" }
|
||||
end
|
||||
|
||||
factory :group do
|
||||
sequence(:name) { |n| "group#{n}" }
|
||||
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
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue