summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/issue_moves_controller.rb85
-rw-r--r--app/controllers/issues_controller.rb9
-rw-r--r--app/helpers/issue_moves_helper.rb4
-rw-r--r--app/views/context_menus/issues.html.erb2
-rw-r--r--app/views/issue_moves/new.html.erb79
-rw-r--r--app/views/issues/_action_menu.html.erb2
-rw-r--r--app/views/issues/bulk_edit.html.erb8
-rw-r--r--config/routes.rb3
-rw-r--r--lib/redmine.rb2
-rw-r--r--test/functional/context_menus_controller_test.rb4
-rw-r--r--test/functional/issue_moves_controller_test.rb116
-rw-r--r--test/functional/issues_controller_test.rb81
-rw-r--r--test/integration/routing/issue_moves_test.rb31
13 files changed, 99 insertions, 327 deletions
diff --git a/app/controllers/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb
deleted file mode 100644
index 234d4d72e..000000000
--- a/app/controllers/issue_moves_controller.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# Redmine - project management software
-# Copyright (C) 2006-2011 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-class IssueMovesController < ApplicationController
- menu_item :issues
-
- default_search_scope :issues
- before_filter :find_issues, :check_project_uniqueness
- before_filter :authorize
-
- def new
- prepare_for_issue_move
- render :layout => false if request.xhr?
- end
-
- def create
- prepare_for_issue_move
-
- if request.post?
- new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id])
- unsaved_issue_ids = []
- moved_issues = []
- @issues.each do |issue|
- issue.reload
- call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy })
- if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params), :notes => @notes})
- moved_issues << r
- else
- unsaved_issue_ids << issue.id
- end
- end
- set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
-
- if params[:follow]
- if @issues.size == 1 && moved_issues.size == 1
- redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first
- else
- redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project)
- end
- else
- redirect_to :controller => 'issues', :action => 'index', :project_id => @project
- end
- return
- end
- end
-
- private
-
- def prepare_for_issue_move
- @issues.sort!
- @copy = params[:copy_options] && params[:copy_options][:copy]
- @allowed_projects = Issue.allowed_target_projects_on_move
- @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id]
- @target_project ||= @project
- @trackers = @target_project.trackers
- @available_statuses = Workflow.available_statuses(@project)
- @notes = params[:notes]
- @notes ||= ''
- end
-
- def extract_changed_attributes_for_move(params)
- changed_attributes = {}
- [:assigned_to_id, :status_id, :start_date, :due_date, :priority_id].each do |valid_attribute|
- unless params[valid_attribute].blank?
- changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute])
- end
- end
- changed_attributes
- end
-
-end
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index ff8d2d0e1..4cbfa3c0a 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -206,9 +206,11 @@ class IssuesController < ApplicationController
end
end
- # Bulk edit a set of issues
+ # Bulk edit/copy a set of issues
def bulk_edit
@issues.sort!
+ @copy = params[:copy].present?
+ @notes = params[:notes]
if User.current.allowed_to?(:move_issues, @projects)
@allowed_projects = Issue.allowed_target_projects_on_move
@@ -226,18 +228,21 @@ class IssuesController < ApplicationController
@assignables = target_projects.map(&:assignable_users).inject{|memo,a| memo & a}
@trackers = target_projects.map(&:trackers).inject{|memo,t| memo & t}
- @notes = params[:notes]
render :layout => false if request.xhr?
end
def bulk_update
@issues.sort!
+ @copy = params[:copy].present?
attributes = parse_params_for_bulk_issue_attributes(params)
unsaved_issue_ids = []
moved_issues = []
@issues.each do |issue|
issue.reload
+ if @copy
+ issue = Issue.new.copy_from(issue)
+ end
journal = issue.init_journal(User.current, params[:notes])
issue.safe_attributes = attributes
call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue })
diff --git a/app/helpers/issue_moves_helper.rb b/app/helpers/issue_moves_helper.rb
deleted file mode 100644
index 00278363f..000000000
--- a/app/helpers/issue_moves_helper.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# encoding: utf-8
-#
-module IssueMovesHelper
-end
diff --git a/app/views/context_menus/issues.html.erb b/app/views/context_menus/issues.html.erb
index f824975bb..628433cb7 100644
--- a/app/views/context_menus/issues.html.erb
+++ b/app/views/context_menus/issues.html.erb
@@ -110,7 +110,7 @@
<li><%= context_menu_link l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue},
:class => 'icon-duplicate', :disabled => !@can[:copy] %></li>
<% end %>
- <li><%= context_menu_link l(:button_copy), new_issue_move_path(:ids => @issues.collect(&:id), :copy_options => {:copy => 't'}),
+ <li><%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), :copy => '1'},
:class => 'icon-copy', :disabled => !@can[:move] %></li>
<li><%= context_menu_link l(:button_delete), issues_path(:ids => @issues.collect(&:id), :back_url => @back),
:method => :delete, :confirm => issues_destroy_confirmation_message(@issues), :class => 'icon-del', :disabled => !@can[:delete] %></li>
diff --git a/app/views/issue_moves/new.html.erb b/app/views/issue_moves/new.html.erb
deleted file mode 100644
index 68ebadcc1..000000000
--- a/app/views/issue_moves/new.html.erb
+++ /dev/null
@@ -1,79 +0,0 @@
-<h2><%= @copy ? l(:button_copy) : l(:button_move) %></h2>
-
-<ul>
-<% @issues.each do |issue| -%>
- <li><%= link_to_issue issue %></li>
-<% end -%>
-</ul>
-
-<% form_tag({:action => 'create'}, :id => 'move_form') do %>
-<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join("\n").html_safe %>
-
-<div class="box tabular">
-<fieldset class="attributes">
-<legend><%= l(:label_change_properties) %></legend>
-
-<div class="splitcontentleft">
-<p><label for="new_project_id"><%=l(:field_project)%>:</label>
-<%= select_tag "new_project_id",
- project_tree_options_for_select(@allowed_projects, :selected => @target_project),
- :onchange => remote_function(:url => { :action => 'new' },
- :method => :get,
- :update => 'content',
- :with => "Form.serialize('move_form')") %></p>
-
-<p><label for="new_tracker_id"><%=l(:field_tracker)%>:</label>
-<%= select_tag "new_tracker_id", "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@trackers, "id", "name") %></p>
-
-<p>
- <label for='status_id'><%= l(:field_status) %></label>
- <%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
-</p>
-
-<p>
- <label for='priority_id'><%= l(:field_priority) %></label>
- <%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.active, :id, :name)) %>
-</p>
-
-<p>
- <label for='assigned_to_id'><%= l(:field_assigned_to) %></label>
- <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
- content_tag('option', l(:label_nobody), :value => 'none') +
- principals_options_for_select(@target_project.assignable_users)) %>
-</p>
-</div>
-
-<div class="splitcontentright">
-<p>
- <label for='start_date'><%= l(:field_start_date) %></label>
- <%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>
-</p>
-
-<p>
- <label for='due_date'><%= l(:field_due_date) %></label>
- <%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>
-</p>
-</div>
-
-</fieldset>
-
-<fieldset><legend><%= l(:field_notes) %></legend>
-<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
-<%= wikitoolbar_for 'notes' %>
-</fieldset>
-
-<%= call_hook(:view_issues_move_bottom, :issues => @issues, :target_project => @target_project, :copy => !!@copy) %>
-</div>
-
-<% if @copy %>
- <%= hidden_field_tag("copy_options[copy]", "1") %>
- <%= submit_tag l(:button_copy) %>
- <%= submit_tag l(:button_copy_and_follow), :name => 'follow' %>
-<% else %>
- <%= submit_tag l(:button_move) %>
- <%= submit_tag l(:button_move_and_follow), :name => 'follow' %>
-<% end %>
-<% end %>
-<% content_for :header_tags do %>
- <%= robot_exclusion_tag %>
-<% end %>
diff --git a/app/views/issues/_action_menu.html.erb b/app/views/issues/_action_menu.html.erb
index 9360960de..d4a6c6552 100644
--- a/app/views/issues/_action_menu.html.erb
+++ b/app/views/issues/_action_menu.html.erb
@@ -3,6 +3,6 @@
<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :issue_id => @issue}, :class => 'icon icon-time-add' %>
<%= watcher_tag(@issue, User.current) %>
<%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %>
-<%= link_to_if_authorized l(:button_copy), {:controller => 'issue_moves', :action => 'new', :id => @issue, :copy_options => {:copy => 't'}}, :class => 'icon icon-copy' %>
+<%= link_to_if_authorized l(:button_copy), {:controller => 'issues', :action => 'bulk_edit', :id => @issue, :copy => '1'}, :class => 'icon icon-copy' %>
<%= link_to l(:button_delete), issue_path(@issue), :confirm => issues_destroy_confirmation_message(@issue), :method => :delete, :class => 'icon icon-del' if User.current.allowed_to?(:delete_issues, @project) %>
</div>
diff --git a/app/views/issues/bulk_edit.html.erb b/app/views/issues/bulk_edit.html.erb
index 9161654ac..dfba2fe95 100644
--- a/app/views/issues/bulk_edit.html.erb
+++ b/app/views/issues/bulk_edit.html.erb
@@ -1,4 +1,4 @@
-<h2><%= l(:label_bulk_edit_selected_issues) %></h2>
+<h2><%= @copy ? l(:button_copy) : l(:label_bulk_edit_selected_issues) %></h2>
<ul><%= @issues.collect {|i|
content_tag('li',
@@ -102,7 +102,11 @@
</div>
<p>
- <% if @target_project %>
+ <% if @copy %>
+ <%= hidden_field_tag 'copy', '1' %>
+ <%= submit_tag l(:button_copy) %>
+ <%= submit_tag l(:button_copy_and_follow), :name => 'follow' %>
+ <% elsif @target_project %>
<%= submit_tag l(:button_move) %>
<%= submit_tag l(:button_move_and_follow), :name => 'follow' %>
<% else %>
diff --git a/config/routes.rb b/config/routes.rb
index 7814fe807..ae5f0f8a7 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -40,9 +40,6 @@ ActionController::Routing::Routes.draw do |map|
end
end
- map.resources :issue_moves, :only => [:new, :create],
- :path_prefix => '/issues', :as => 'move'
-
# Misc issue routes. TODO: move into resources
map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes',
:action => 'issues', :conditions => { :method => :get }
diff --git a/lib/redmine.rb b/lib/redmine.rb
index 6fdb2192c..b33b5847c 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -76,7 +76,7 @@ Redmine::AccessControl.map do |map|
map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new]}
map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin
map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin
- map.permission :move_issues, {:issue_moves => [:new, :create]}, :require => :loggedin
+ map.permission :move_issues, {:issues => [:bulk_edit, :bulk_update]}, :require => :loggedin
map.permission :delete_issues, {:issues => :destroy}, :require => :member
# Queries
map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member
diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb
index b5650091c..7a188560b 100644
--- a/test/functional/context_menus_controller_test.rb
+++ b/test/functional/context_menus_controller_test.rb
@@ -47,7 +47,7 @@ class ContextMenusControllerTest < ActionController::TestCase
:attributes => { :href => '/projects/ecookbook/issues/1/copy',
:class => 'icon-duplicate' }
assert_tag :tag => 'a', :content => 'Copy',
- :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&amp;ids%5B%5D=1',
+ :attributes => { :href => '/issues/bulk_edit?copy=1&amp;ids%5B%5D=1',
:class => 'icon-copy' }
assert_no_tag :tag => 'a', :content => 'Move'
assert_tag :tag => 'a', :content => 'Delete',
@@ -86,7 +86,7 @@ class ContextMenusControllerTest < ActionController::TestCase
:attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=3",
:class => '' }
assert_tag :tag => 'a', :content => 'Copy',
- :attributes => { :href => "/issues/move/new?copy_options%5Bcopy%5D=t&amp;#{ids}",
+ :attributes => { :href => "/issues/bulk_edit?copy=1&amp;#{ids}",
:class => 'icon-copy' }
assert_no_tag :tag => 'a', :content => 'Move'
assert_tag :tag => 'a', :content => 'Delete',
diff --git a/test/functional/issue_moves_controller_test.rb b/test/functional/issue_moves_controller_test.rb
deleted file mode 100644
index 26feeff5f..000000000
--- a/test/functional/issue_moves_controller_test.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-require File.expand_path('../../test_helper', __FILE__)
-
-class IssueMovesControllerTest < ActionController::TestCase
- fixtures :projects, :trackers, :issue_statuses, :issues,
- :enumerations, :users, :issue_categories,
- :projects_trackers,
- :roles,
- :member_roles,
- :members,
- :enabled_modules,
- :workflows,
- :journals, :journal_details
-
- def setup
- User.current = nil
- end
-
- def test_get_issue_moves_new
- @request.session[:user_id] = 2
- get :new, :id => 1
-
- assert_tag :tag => 'option', :content => 'eCookbook',
- :attributes => { :value => '1', :selected => 'selected' }
- %w(new_tracker_id status_id priority_id assigned_to_id).each do |field|
- assert_tag :tag => 'option', :content => '(No change)', :attributes => { :value => '' },
- :parent => {:tag => 'select', :attributes => {:id => field}}
- assert_no_tag :tag => 'option', :attributes => {:selected => 'selected'},
- :parent => {:tag => 'select', :attributes => {:id => field}}
- end
-
- # Be sure we don't include inactive enumerations
- assert ! IssuePriority.find(15).active?
- assert_no_tag :option, :attributes => {:value => '15'},
- :parent => {:tag => 'select', :attributes => {:id => 'priority_id'} }
- end
-
- def test_bulk_copy_to_another_project
- @request.session[:user_id] = 2
- assert_difference 'Issue.count', 2 do
- assert_no_difference 'Project.find(1).issues.count' do
- post :create, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'}
- end
- end
- assert_redirected_to '/projects/ecookbook/issues'
- end
-
- context "#create via bulk copy" do
- should "allow not changing the issue's attributes" do
- @request.session[:user_id] = 2
- issue_before_move = Issue.find(1)
- assert_difference 'Issue.count', 1 do
- assert_no_difference 'Project.find(1).issues.count' do
- post :create, :ids => [1], :new_project_id => 2,
- :copy_options => {:copy => '1'}, :new_tracker_id => '',
- :assigned_to_id => '', :status_id => '',
- :start_date => '', :due_date => ''
- end
- end
- issue_after_move = Issue.first(:order => 'id desc', :conditions => {:project_id => 2})
- assert_equal issue_before_move.tracker_id, issue_after_move.tracker_id
- assert_equal issue_before_move.status_id, issue_after_move.status_id
- assert_equal issue_before_move.assigned_to_id, issue_after_move.assigned_to_id
- end
-
- should "allow changing the issue's attributes" do
- # Fixes random test failure with Mysql
- # where Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2})
- # doesn't return the expected results
- Issue.delete_all("project_id=2")
-
- @request.session[:user_id] = 2
- assert_difference 'Issue.count', 2 do
- assert_no_difference 'Project.find(1).issues.count' do
- post :create, :ids => [1, 2], :new_project_id => 2,
- :copy_options => {:copy => '1'}, :new_tracker_id => '',
- :assigned_to_id => 4, :status_id => 3,
- :start_date => '2009-12-01', :due_date => '2009-12-31'
- end
- end
-
- copied_issues = Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2})
- assert_equal 2, copied_issues.size
- copied_issues.each do |issue|
- assert_equal 2, issue.project_id, "Project is incorrect"
- assert_equal 4, issue.assigned_to_id, "Assigned to is incorrect"
- assert_equal 3, issue.status_id, "Status is incorrect"
- assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect"
- assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect"
- end
- end
-
- should "allow adding a note when copying" do
- @request.session[:user_id] = 2
- assert_difference 'Issue.count', 1 do
- post :create, :ids => [1], :copy_options => {:copy => '1'},
- :notes => 'Copying one issue', :new_tracker_id => '',
- :assigned_to_id => 4, :status_id => 3,
- :start_date => '2009-12-01', :due_date => '2009-12-31'
- end
-
- issue = Issue.first(:order => 'id DESC')
- assert_equal 1, issue.journals.size
- journal = issue.journals.first
- assert_equal 0, journal.details.size
- assert_equal 'Copying one issue', journal.notes
- end
- end
-
- def test_copy_to_another_project_should_follow_when_needed
- @request.session[:user_id] = 2
- post :create, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :follow => '1'
- issue = Issue.first(:order => 'id DESC')
- assert_redirected_to :controller => 'issues', :action => 'show', :id => issue
- end
-
-end
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index 234cb41f8..66bd6606c 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -2319,6 +2319,87 @@ class IssuesControllerTest < ActionController::TestCase
assert_redirected_to :controller => 'issues', :action => 'index', :project_id => Project.find(1).identifier
end
+ def test_bulk_copy_to_another_project
+ @request.session[:user_id] = 2
+ assert_difference 'Issue.count', 2 do
+ assert_no_difference 'Project.find(1).issues.count' do
+ post :bulk_update, :ids => [1, 2], :issue => {:project_id => '2'}, :copy => '1'
+ end
+ end
+ assert_redirected_to '/projects/ecookbook/issues'
+ end
+
+ def test_bulk_copy_should_allow_not_changing_the issue_attributes
+ @request.session[:user_id] = 2
+ issue_before_move = Issue.find(1)
+ assert_difference 'Issue.count', 1 do
+ assert_no_difference 'Project.find(1).issues.count' do
+ post :bulk_update, :ids => [1], :copy => '1',
+ :issue => {
+ :project_id => '2', :tracker_id => '', :assigned_to_id => '',
+ :status_id => '', :start_date => '', :due_date => ''
+ }
+ end
+ end
+ issue_after_move = Issue.first(:order => 'id desc', :conditions => {:project_id => 2})
+ assert_equal issue_before_move.tracker_id, issue_after_move.tracker_id
+ assert_equal issue_before_move.status_id, issue_after_move.status_id
+ assert_equal issue_before_move.assigned_to_id, issue_after_move.assigned_to_id
+ end
+
+ def test_bulk_copy_should_allow_changing_the_issue_attributes
+ # Fixes random test failure with Mysql
+ # where Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2})
+ # doesn't return the expected results
+ Issue.delete_all("project_id=2")
+
+ @request.session[:user_id] = 2
+ assert_difference 'Issue.count', 2 do
+ assert_no_difference 'Project.find(1).issues.count' do
+ post :bulk_update, :ids => [1, 2], :copy => '1',
+ :issue => {
+ :project_id => '2', :tracker_id => '', :assigned_to_id => '4',
+ :status_id => '3', :start_date => '2009-12-01', :due_date => '2009-12-31'
+ }
+ end
+ end
+
+ copied_issues = Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2})
+ assert_equal 2, copied_issues.size
+ copied_issues.each do |issue|
+ assert_equal 2, issue.project_id, "Project is incorrect"
+ assert_equal 4, issue.assigned_to_id, "Assigned to is incorrect"
+ assert_equal 3, issue.status_id, "Status is incorrect"
+ assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect"
+ assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect"
+ end
+ end
+
+ def test_bulk_copy_should_allow_adding_a_note
+ @request.session[:user_id] = 2
+ assert_difference 'Issue.count', 1 do
+ post :bulk_update, :ids => [1], :copy => '1',
+ :notes => 'Copying one issue',
+ :issue => {
+ :project_id => '', :tracker_id => '', :assigned_to_id => '4',
+ :status_id => '3', :start_date => '2009-12-01', :due_date => '2009-12-31'
+ }
+ end
+
+ issue = Issue.first(:order => 'id DESC')
+ assert_equal 1, issue.journals.size
+ journal = issue.journals.first
+ assert_equal 0, journal.details.size
+ assert_equal 'Copying one issue', journal.notes
+ end
+
+ def test_bulk_copy_to_another_project_should_follow_when_needed
+ @request.session[:user_id] = 2
+ post :bulk_update, :ids => [1], :copy => '1', :issue => {:project_id => 2}, :follow => '1'
+ issue = Issue.first(:order => 'id DESC')
+ assert_redirected_to :controller => 'issues', :action => 'show', :id => issue
+ end
+
def test_destroy_issue_with_no_time_entries
assert_nil TimeEntry.find_by_issue_id(2)
@request.session[:user_id] = 2
diff --git a/test/integration/routing/issue_moves_test.rb b/test/integration/routing/issue_moves_test.rb
deleted file mode 100644
index b4dcee94e..000000000
--- a/test/integration/routing/issue_moves_test.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# Redmine - project management software
-# Copyright (C) 2006-2011 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-require File.expand_path('../../../test_helper', __FILE__)
-
-class RoutingIssueMovesTest < ActionController::IntegrationTest
- def test_issue_moves
- assert_routing(
- { :method => 'get', :path => "/issues/move/new" },
- { :controller => 'issue_moves', :action => 'new' }
- )
- assert_routing(
- { :method => 'post', :path => "/issues/move" },
- { :controller => 'issue_moves', :action => 'create' }
- )
- end
-end