Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew8xx8 <avk@8xx8.ru>2013-02-11 17:32:29 +0400
committerAndrew8xx8 <avk@8xx8.ru>2013-02-28 16:11:13 +0400
commit16c720fd966ccb70a7642c59b81b23f74f00c122 (patch)
tree14b67a96d17e84af07e305035f9377e07303e779
parentf13600845d2ccec816337234eb5f1dccd40777f7 (diff)
Issues helper improved
-rw-r--r--app/helpers/issues_helper.rb8
-rw-r--r--spec/helpers/issues_helper_spec.rb54
2 files changed, 61 insertions, 1 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 0d1301d0627..3f802727560 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -42,15 +42,21 @@ module IssuesHelper
end
def url_for_issue(issue_id)
+ return "" if @project.nil?
+
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"]
- url.gsub(':id', issue_id.to_s).gsub(':project_id', @project.id.to_s)
+ url.gsub(':id', issue_id.to_s)
+ .gsub(':project_id', @project.id.to_s)
+ .gsub(':issues_tracker_id', @project.issues_tracker_id.to_s)
end
end
def title_for_issue(issue_id)
+ return "" if @project.nil?
+
if @project.used_default_issues_tracker? && issue = @project.issues.where(id: issue_id).first
issue.title
else
diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb
new file mode 100644
index 00000000000..7d2ac8c7d84
--- /dev/null
+++ b/spec/helpers/issues_helper_spec.rb
@@ -0,0 +1,54 @@
+require "spec_helper"
+
+describe IssuesHelper do
+ let(:project) { create(:project) }
+ let(:issue) { create(:issue, project: project) }
+ let(:ext_project) { create(:redmine_project) }
+
+ describe :title_for_issue do
+ it "should return issue title if used internal tracker" do
+ @project = project
+ title_for_issue(issue.id).should eq issue.title
+ end
+
+ it "should always return empty string if used external tracker" do
+ @project = ext_project
+ title_for_issue(rand(100)).should eq ""
+ end
+
+ it "should always return empty string if project nil" do
+ @project = nil
+
+ title_for_issue(rand(100)).should eq ""
+ end
+ end
+
+ describe :url_for_issue do
+ let(:issue_id) { 3 }
+ let(:issues_url) { "http://redmine/:project_id/:issues_tracker_id/:id" }
+ let(:ext_expected) do
+ issues_url.gsub(':id', issue_id.to_s)
+ .gsub(':project_id', ext_project.id.to_s)
+ .gsub(':issues_tracker_id', ext_project.issues_tracker_id.to_s)
+ end
+ let(:int_expected) { polymorphic_path([project, issue]) }
+
+ it "should return internal path if used internal tracker" do
+ @project = project
+ url_for_issue(issue.id).should match(int_expected)
+ end
+
+ it "should return path to external tracker" do
+ @project = ext_project
+ Settings[:issues_tracker][ext_project.issues_tracker]["issues_url"] = issues_url
+
+ url_for_issue(issue_id).should match(ext_expected)
+ end
+
+ it "should return empty string if project nil" do
+ @project = nil
+
+ url_for_issue(issue.id).should eq ""
+ end
+ end
+end