Commit f41731047f20ceb184b9ceb96f4174943af7736d

Authored by Dmitriy Zaporozhets
2 parents d6fce105 d9deb24f

Merge pull request #5507 from jojosch/project-issue-tracker-selection

Preselect the current issue tracker with selected="selected"
app/helpers/projects_helper.rb
@@ -83,7 +83,7 @@ module ProjectsHelper @@ -83,7 +83,7 @@ module ProjectsHelper
83 @project.milestones.active.order("due_date, title ASC").all 83 @project.milestones.active.order("due_date, title ASC").all
84 end 84 end
85 85
86 - def project_issues_trackers 86 + def project_issues_trackers(current_tracker = nil)
87 values = Project.issues_tracker.values.map do |tracker_key| 87 values = Project.issues_tracker.values.map do |tracker_key|
88 if tracker_key.to_sym == :gitlab 88 if tracker_key.to_sym == :gitlab
89 ['GitLab', tracker_key] 89 ['GitLab', tracker_key]
@@ -92,7 +92,7 @@ module ProjectsHelper @@ -92,7 +92,7 @@ module ProjectsHelper
92 end 92 end
93 end 93 end
94 94
95 - options_for_select(values) 95 + options_for_select(values, current_tracker)
96 end 96 end
97 97
98 private 98 private
app/views/projects/edit.html.haml
@@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
67 - if Project.issues_tracker.values.count > 1 67 - if Project.issues_tracker.values.count > 1
68 .control-group 68 .control-group
69 = f.label :issues_tracker, "Issues tracker", class: 'control-label' 69 = f.label :issues_tracker, "Issues tracker", class: 'control-label'
70 - .controls= f.select(:issues_tracker, project_issues_trackers, {}, { disabled: !@project.issues_enabled }) 70 + .controls= f.select(:issues_tracker, project_issues_trackers(@project.issues_tracker), {}, { disabled: !@project.issues_enabled })
71 71
72 .control-group 72 .control-group
73 = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label' 73 = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
features/project/edit_issuetracker.feature 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +Feature: Project Issue Tracker
  2 + Background:
  3 + Given I sign in as a user
  4 + And I own project "Shop"
  5 + And project "Shop" has issues enabled
  6 + And I visit project "Shop" page
  7 +
  8 + Scenario: I set the issue tracker to "GitLab"
  9 + When I visit edit project "Shop" page
  10 + And change the issue tracker to "GitLab"
  11 + And I save project
  12 + Then I the project should have "GitLab" as issue tracker
  13 +
  14 + Scenario: I set the issue tracker to "Redmine"
  15 + When I visit edit project "Shop" page
  16 + And change the issue tracker to "Redmine"
  17 + And I save project
  18 + Then I the project should have "Redmine" as issue tracker
0 \ No newline at end of file 19 \ No newline at end of file
features/steps/project/project_issue_tracker.rb 0 → 100644
@@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
  1 +class ProjectIssueTracker < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedProject
  4 + include SharedPaths
  5 +
  6 + step 'project "Shop" has issues enabled' do
  7 + @project = Project.find_by_name "Shop"
  8 + @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
  9 + @project.issues_enabled = true
  10 + end
  11 +
  12 + step 'change the issue tracker to "GitLab"' do
  13 + select 'GitLab', from: 'project_issues_tracker'
  14 + end
  15 +
  16 + step 'I the project should have "GitLab" as issue tracker' do
  17 + find_field('project_issues_tracker').value.should == 'gitlab'
  18 + end
  19 +
  20 + step 'change the issue tracker to "Redmine"' do
  21 + select 'Redmine', from: 'project_issues_tracker'
  22 + end
  23 +
  24 + step 'I the project should have "Redmine" as issue tracker' do
  25 + find_field('project_issues_tracker').value.should == 'redmine'
  26 + end
  27 +
  28 + And 'I save project' do
  29 + click_button 'Save changes'
  30 + end
  31 +end
spec/helpers/projects_helper_spec.rb
@@ -7,5 +7,17 @@ describe ProjectsHelper do @@ -7,5 +7,17 @@ describe ProjectsHelper do
7 "<option value=\"redmine\">Redmine</option>\n" \ 7 "<option value=\"redmine\">Redmine</option>\n" \
8 "<option value=\"gitlab\">GitLab</option>" 8 "<option value=\"gitlab\">GitLab</option>"
9 end 9 end
  10 +
  11 + it "returns the correct issues trackers available with current tracker 'gitlab' selected" do
  12 + project_issues_trackers('gitlab').should ==
  13 + "<option value=\"redmine\">Redmine</option>\n" \
  14 + "<option value=\"gitlab\" selected=\"selected\">GitLab</option>"
  15 + end
  16 +
  17 + it "returns the correct issues trackers available with current tracker 'redmine' selected" do
  18 + project_issues_trackers('redmine').should ==
  19 + "<option value=\"redmine\" selected=\"selected\">Redmine</option>\n" \
  20 + "<option value=\"gitlab\">GitLab</option>"
  21 + end
10 end 22 end
11 end 23 end