From 09263719d536a3935c4b1d801472126ece28f283 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 13:56:13 +0300 Subject: [PATCH 1/6] Preselected Milestone: Cucumber scenario added --- features/projects/issues/issues.feature | 10 ++++++++++ .../step_definitions/project/project_issues_steps.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/features/projects/issues/issues.feature b/features/projects/issues/issues.feature index 42a3d8736e0..f0d9b61074d 100644 --- a/features/projects/issues/issues.feature +++ b/features/projects/issues/issues.feature @@ -64,3 +64,13 @@ Feature: Issues And I fill in issue search with "" Then I should see "Release 0.4" in issues And I should see "Release 0.3" in issues + + @javascript + @current + Scenario: I create Issue with pre-selected milestone + Given project "Shop" has milestone "v2.2" + And project "Shop" has milestone "v3.0" + And I visit project "Shop" issues page + When I select milestone "v3.0" + And I click link "New Issue" + Then I should see selected milestone with title "v3.0" diff --git a/features/step_definitions/project/project_issues_steps.rb b/features/step_definitions/project/project_issues_steps.rb index e46c1f42f75..ecf0892f601 100644 --- a/features/step_definitions/project/project_issues_steps.rb +++ b/features/step_definitions/project/project_issues_steps.rb @@ -55,3 +55,15 @@ Given /^I fill in issue search with "(.*?)"$/ do |arg1| end fill_in 'issue_search', with: arg1 end + +When /^I select milestone "(.*?)"$/ do |milestone_title| + select milestone_title, from: "milestone_id" +end + +Then /^I should see selected milestone with title "(.*?)"$/ do |milestone_title| + issues_milestone_selector = "#issue_milestone_id_chzn/a" + wait_until{ + page.has_content?("Details") + } + page.find(issues_milestone_selector).should have_content(milestone_title) +end -- GitLab From 26552051b7af709ad21497747405714006a14b68 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 16:35:59 +0300 Subject: [PATCH 2/6] Pre-selected milestone implemented --- app/assets/javascripts/issues.js | 21 +++++++++++++++++++ app/controllers/issues_controller.rb | 1 + app/views/issues/index.html.haml | 2 +- .../project/project_issues_steps.rb | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/issues.js b/app/assets/javascripts/issues.js index aae818deefc..7f5694d0264 100644 --- a/app/assets/javascripts/issues.js +++ b/app/assets/javascripts/issues.js @@ -80,6 +80,10 @@ function issuesPage(){ $(this).closest("form").submit(); }); + $("#new_issue_link").click(function(){ + updateNewIssueURL(); + }); + $('body').on('ajax:success', '.close_issue, .reopen_issue, #new_issue', function(){ var t = $(this), totalIssues, @@ -126,3 +130,20 @@ function issuesCheckChanged() { $('.issues_filters').show(); } } + +function updateNewIssueURL(){ + var new_issue_link = $("#new_issue_link"); + var milestone_id = $("#milestone_id").val(); + var assignee_id = $("#assignee_id").val(); + var new_href = ""; + if(milestone_id){ + new_href = "milestone_id=" + milestone_id + "&"; + } + if(assignee_id){ + new_href = new_href + "assignee_id=" + assignee_id; + } + if(new_href.length){ + new_href = new_issue_link.attr("href") + "?" + new_href; + new_issue_link.attr("href", new_href); + } +}; diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index a47b38435f2..b98c0b014e7 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -38,6 +38,7 @@ class IssuesController < ApplicationController def new @issue = @project.issues.new + @issue.milestone_id = params[:milestone_id] if params[:milestone_id].present? respond_with(@issue) end diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 010b8856d65..bc5c86e6dfd 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -6,7 +6,7 @@ .right .span5 - if can? current_user, :write_issue, @project - = link_to new_project_issue_path(@project), class: "right btn", title: "New Issue", remote: true do + = link_to new_project_issue_path(@project), class: "right btn", title: "New Issue", remote: true, id: "new_issue_link" do %i.icon-plus New Issue = form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: :right do diff --git a/features/step_definitions/project/project_issues_steps.rb b/features/step_definitions/project/project_issues_steps.rb index ecf0892f601..e4c169ecd03 100644 --- a/features/step_definitions/project/project_issues_steps.rb +++ b/features/step_definitions/project/project_issues_steps.rb @@ -57,6 +57,7 @@ Given /^I fill in issue search with "(.*?)"$/ do |arg1| end When /^I select milestone "(.*?)"$/ do |milestone_title| + #puts page.body select milestone_title, from: "milestone_id" end -- GitLab From c818c93aa7f8102dfd449bf2f1e82b36578e3ac7 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 16:51:37 +0300 Subject: [PATCH 3/6] Cucumber scenario on pre-selected assignee added --- features/projects/issues/issues.feature | 9 ++++++++- .../project/project_issues_steps.rb | 19 +++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/features/projects/issues/issues.feature b/features/projects/issues/issues.feature index f0d9b61074d..2cfda136072 100644 --- a/features/projects/issues/issues.feature +++ b/features/projects/issues/issues.feature @@ -66,7 +66,6 @@ Feature: Issues And I should see "Release 0.3" in issues @javascript - @current Scenario: I create Issue with pre-selected milestone Given project "Shop" has milestone "v2.2" And project "Shop" has milestone "v3.0" @@ -74,3 +73,11 @@ Feature: Issues When I select milestone "v3.0" And I click link "New Issue" Then I should see selected milestone with title "v3.0" + + @javascript + @current + Scenario: I create Issue with pre-selected assignee + When I select first assignee from "Shop" project + And I click link "New Issue" + Then I should see first assignee from "Shop" as selected assignee + diff --git a/features/step_definitions/project/project_issues_steps.rb b/features/step_definitions/project/project_issues_steps.rb index e4c169ecd03..d78da53c4fc 100644 --- a/features/step_definitions/project/project_issues_steps.rb +++ b/features/step_definitions/project/project_issues_steps.rb @@ -57,14 +57,25 @@ Given /^I fill in issue search with "(.*?)"$/ do |arg1| end When /^I select milestone "(.*?)"$/ do |milestone_title| - #puts page.body select milestone_title, from: "milestone_id" end Then /^I should see selected milestone with title "(.*?)"$/ do |milestone_title| issues_milestone_selector = "#issue_milestone_id_chzn/a" - wait_until{ - page.has_content?("Details") - } + wait_until{ page.has_content?("Details") } page.find(issues_milestone_selector).should have_content(milestone_title) end + +When /^I select first assignee from "(.*?)" project$/ do |project_name| + project = Project.find_by_name project_name + first_assignee = project.users.first + select first_assignee.name, from: "assignee_id" +end + +Then /^I should see first assignee from "(.*?)" as selected assignee$/ do |project_name| + issues_assignee_selector = "#issue_assignee_id_chzn/a" + wait_until{ page.has_content?("Details") } + project = Project.find_by_name project_name + assignee_name = project.users.first.name + page.find(issues_assignee_selector).should have_content(assignee_name) +end -- GitLab From b462b0c6ebfea32ba816ee8c30bc5aa4e5049e91 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 16:52:48 +0300 Subject: [PATCH 4/6] Pre-selected assignee implemented --- app/controllers/issues_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index b98c0b014e7..05f5abb8cce 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -39,6 +39,7 @@ class IssuesController < ApplicationController def new @issue = @project.issues.new @issue.milestone_id = params[:milestone_id] if params[:milestone_id].present? + @issue.assignee_id = params[:assignee_id] if params[:assignee_id].present? respond_with(@issue) end -- GitLab From 320250cd7be1bbd6c2140344b8d3270728a84946 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 17:03:38 +0300 Subject: [PATCH 5/6] Cucumber tag removed --- features/projects/issues/issues.feature | 1 - 1 file changed, 1 deletion(-) diff --git a/features/projects/issues/issues.feature b/features/projects/issues/issues.feature index 2cfda136072..b2301b3f1ff 100644 --- a/features/projects/issues/issues.feature +++ b/features/projects/issues/issues.feature @@ -75,7 +75,6 @@ Feature: Issues Then I should see selected milestone with title "v3.0" @javascript - @current Scenario: I create Issue with pre-selected assignee When I select first assignee from "Shop" project And I click link "New Issue" -- GitLab From 1b83af6eed3a4069a8f66a6785632e6f950e900f Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Fri, 7 Sep 2012 20:59:12 +0300 Subject: [PATCH 6/6] IssueController#new refactored --- app/assets/javascripts/issues.js | 4 ++-- app/controllers/issues_controller.rb | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/issues.js b/app/assets/javascripts/issues.js index 7f5694d0264..148dc7b96e9 100644 --- a/app/assets/javascripts/issues.js +++ b/app/assets/javascripts/issues.js @@ -137,10 +137,10 @@ function updateNewIssueURL(){ var assignee_id = $("#assignee_id").val(); var new_href = ""; if(milestone_id){ - new_href = "milestone_id=" + milestone_id + "&"; + new_href = "issue[milestone_id]=" + milestone_id + "&"; } if(assignee_id){ - new_href = new_href + "assignee_id=" + assignee_id; + new_href = new_href + "issue[assignee_id]=" + assignee_id; } if(new_href.length){ new_href = new_issue_link.attr("href") + "?" + new_href; diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 05f5abb8cce..3d305238191 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -37,9 +37,7 @@ class IssuesController < ApplicationController end def new - @issue = @project.issues.new - @issue.milestone_id = params[:milestone_id] if params[:milestone_id].present? - @issue.assignee_id = params[:assignee_id] if params[:assignee_id].present? + @issue = @project.issues.new(params[:issue]) respond_with(@issue) end -- GitLab