Commit 68a7ecda authored by Andrew8xx8's avatar Andrew8xx8

Project issue tracker functions refactored

parent 999fc239
...@@ -42,7 +42,7 @@ module IssuesHelper ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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/, '_') }
......
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 ...@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment