Project issue tracker functions refactored

This commit is contained in:
Andrew8xx8 2013-02-11 15:41:12 +04:00
parent 999fc2391b
commit 68a7ecdaaf
6 changed files with 52 additions and 29 deletions

View file

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

View file

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

View file

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

View file

@ -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/, '_') }

View file

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

View file

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