##// END OF EJS Templates
Upgraded to Rails 2.3.4 (#3597)...
Upgraded to Rails 2.3.4 (#3597) * Ran the Rails upgrade * Upgraded to Rails Engines 2.3.2 * Added a plugin to let Engines override application views. * Converted tests to use the new classes: ** ActionController::TestCase for functional ** ActiveSupport::TestCase for units * Converted ActiveRecord::Error message to a string. * ActiveRecord grouping returns an ordered hash which doesn't have #sort! * Updated the I18n storage_units format. * Added some default initializers from a fresh rails app * Changed the order of check_box_tags and hidden_field_tags. The hidden tag needs to appear first in Rails 2.3, otherwise it will override any value in the check_box_tag. * Removed the custom handler for when the cookie store is tampered with. Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not load the data from it when it's been tampered with (e.g. no user login). * Fixed mail layouts, 2.3 has problems with implicit multipart emails that use layouts. Also removed some custom Redmine mailer code. * Fixed a bug that occurred in tests where the "required" span tag would be added to the :field_status translation. This resulted in an email string of: <li>Status<span class="required"> *</span><span class="required"> *</span> Instead of: <li>Status: New</li> git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2773:7b0cb6aba871
r2773:7b0cb6aba871
Show More
issues_controller_test.rb
1096 lines | 39.0 KiB | text/x-ruby | RubyLexer
/ test / functional / issues_controller_test.rb
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Calendar....
r1796 # Redmine - project management software
# Copyright (C) 2006-2008 Jean-Philippe Lang
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 #
# 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.dirname(__FILE__) + '/../test_helper'
require 'issues_controller'
# Re-raise errors caught by the controller.
class IssuesController; def rescue_action(e) raise e end; end
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class IssuesControllerTest < ActionController::TestCase
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 fixtures :projects,
:users,
:roles,
:members,
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 :member_roles,
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 :issues,
:issue_statuses,
Jean-Philippe Lang
Functional tests fail when run on their own (#1895)....
r1826 :versions,
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 :trackers,
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 :projects_trackers,
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 :issue_categories,
:enabled_modules,
:enumerations,
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 :attachments,
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076 :workflows,
:custom_fields,
:custom_values,
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 :custom_fields_trackers,
Jean-Philippe Lang
Fixes functional tests broken by r1501....
r1490 :time_entries,
:journals,
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 :journal_details,
:queries
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874
def setup
@controller = IssuesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
def test_index_routing
assert_routing(
{:method => :get, :path => '/issues'},
:controller => 'issues', :action => 'index'
)
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874
def test_index
Jean-Philippe Lang
Adds a sortable "Project" column to the issue list....
r2498 Setting.default_language = 'en'
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 get :index
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:project)
Jean-Philippe Lang
Fixed: private subprojects are listed on the issues view (#1217)....
r1417 assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
# private projects hidden
assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
assert_no_tag :tag => 'a', :content => /Issue on project 2/
Jean-Philippe Lang
Adds a sortable "Project" column to the issue list....
r2498 # project column
assert_tag :tag => 'th', :content => /Project/
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 end
Jean-Philippe Lang
Fixed: cross-project issue list should not show issues of projects for which the issue tracking module was disabled....
r1905
def test_index_should_not_list_issues_when_module_disabled
EnabledModule.delete_all("name = 'issue_tracking' AND project_id = 1")
get :index
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:project)
assert_no_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_index_with_project_routing
assert_routing(
{:method => :get, :path => '/projects/23/issues'},
:controller => 'issues', :action => 'index', :project_id => '23'
)
end
def test_index_should_not_list_issues_when_module_disabled
EnabledModule.delete_all("name = 'issue_tracking' AND project_id = 1")
get :index
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:project)
assert_no_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
end
def test_index_with_project_routing
assert_routing(
{:method => :get, :path => 'projects/23/issues'},
:controller => 'issues', :action => 'index', :project_id => '23'
)
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 def test_index_with_project
Jean-Philippe Lang
Fixed: private subprojects are listed on the issues view (#1217)....
r1417 Setting.display_subprojects_issues = 0
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
Jean-Philippe Lang
Fixed: private subprojects are listed on the issues view (#1217)....
r1417 assert_tag :tag => 'a', :content => /Can't print recipes/
assert_no_tag :tag => 'a', :content => /Subproject issue/
end
def test_index_with_project_and_subprojects
Setting.display_subprojects_issues = 1
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
end
def test_index_with_project_and_subprojects_should_show_private_subprojects
@request.session[:user_id] = 2
Setting.display_subprojects_issues = 1
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
assert_tag :tag => 'a', :content => /Issue of a private subproject/
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_index_with_project_routing_formatted
assert_routing(
{:method => :get, :path => 'projects/23/issues.pdf'},
:controller => 'issues', :action => 'index', :project_id => '23', :format => 'pdf'
)
assert_routing(
{:method => :get, :path => 'projects/23/issues.atom'},
:controller => 'issues', :action => 'index', :project_id => '23', :format => 'atom'
)
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 def test_index_with_project_and_filter
get :index, :project_id => 1, :set_filter => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
end
Jean-Philippe Lang
Ticket grouping (#2679)....
r2604 def test_index_with_query
get :index, :project_id => 1, :query_id => 5
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:issue_count_by_group)
end
def test_index_with_grouped_query
get :index, :project_id => 1, :query_id => 6
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_not_nil assigns(:issue_count_by_group)
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 def test_index_csv_with_project
get :index, :format => 'csv'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'text/csv', @response.content_type
get :index, :project_id => 1, :format => 'csv'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'text/csv', @response.content_type
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_index_formatted
assert_routing(
{:method => :get, :path => 'issues.pdf'},
:controller => 'issues', :action => 'index', :format => 'pdf'
)
assert_routing(
{:method => :get, :path => 'issues.atom'},
:controller => 'issues', :action => 'index', :format => 'atom'
)
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 def test_index_pdf
get :index, :format => 'pdf'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'application/pdf', @response.content_type
get :index, :project_id => 1, :format => 'pdf'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'application/pdf', @response.content_type
Jean-Philippe Lang
Ticket grouping (#2679)....
r2604
get :index, :project_id => 1, :query_id => 6, :format => 'pdf'
assert_response :success
assert_not_nil assigns(:issues)
assert_equal 'application/pdf', @response.content_type
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 end
Jean-Philippe Lang
Validates sort_key and sort_order params (#2378)....
r2169
def test_index_sort
Jean-Philippe Lang
Fixing tests (sort refactoring)....
r2509 get :index, :sort => 'tracker,id:desc'
Jean-Philippe Lang
Validates sort_key and sort_order params (#2378)....
r2169 assert_response :success
Jean-Philippe Lang
Fixing tests (sort refactoring)....
r2509 sort_params = @request.session['issues_index_sort']
assert sort_params.is_a?(String)
assert_equal 'tracker,id:desc', sort_params
issues = assigns(:issues)
assert_not_nil issues
assert !issues.empty?
assert_equal issues.sort {|a,b| a.tracker == b.tracker ? b.id <=> a.id : a.tracker <=> b.tracker }.collect(&:id), issues.collect(&:id)
Jean-Philippe Lang
Validates sort_key and sort_order params (#2378)....
r2169 end
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Gantt chart....
r1795
def test_gantt
get :gantt, :project_id => 1
assert_response :success
assert_template 'gantt.rhtml'
assert_not_nil assigns(:gantt)
events = assigns(:gantt).events
assert_not_nil events
# Issue with start and due dates
i = Issue.find(1)
assert_not_nil i.due_date
assert events.include?(Issue.find(1))
# Issue with without due date but targeted to a version with date
i = Issue.find(2)
assert_nil i.due_date
assert events.include?(i)
end
Jean-Philippe Lang
Cross-project gantt and calendar (#1157)....
r2086 def test_cross_project_gantt
get :gantt
assert_response :success
assert_template 'gantt.rhtml'
assert_not_nil assigns(:gantt)
events = assigns(:gantt).events
assert_not_nil events
end
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Gantt chart....
r1795 def test_gantt_export_to_pdf
get :gantt, :project_id => 1, :format => 'pdf'
assert_response :success
assert_equal 'application/pdf', @response.content_type
Jean-Philippe Lang
Move PDF stuff to a single helper....
r2224 assert @response.body.starts_with?('%PDF')
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Gantt chart....
r1795 assert_not_nil assigns(:gantt)
end
Jean-Philippe Lang
Cross-project gantt and calendar (#1157)....
r2086
def test_cross_project_gantt_export_to_pdf
get :gantt, :format => 'pdf'
assert_response :success
assert_equal 'application/pdf', @response.content_type
Jean-Philippe Lang
Move PDF stuff to a single helper....
r2224 assert @response.body.starts_with?('%PDF')
Jean-Philippe Lang
Cross-project gantt and calendar (#1157)....
r2086 assert_not_nil assigns(:gantt)
end
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Gantt chart....
r1795
if Object.const_defined?(:Magick)
def test_gantt_image
get :gantt, :project_id => 1, :format => 'png'
assert_response :success
assert_equal 'image/png', @response.content_type
end
else
puts "RMagick not installed. Skipping tests !!!"
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Calendar....
r1796 def test_calendar
get :calendar, :project_id => 1
assert_response :success
assert_template 'calendar'
assert_not_nil assigns(:calendar)
Jean-Philippe Lang
Cross-project gantt and calendar (#1157)....
r2086 end
def test_cross_project_calendar
get :calendar
assert_response :success
assert_template 'calendar'
assert_not_nil assigns(:calendar)
Jean-Philippe Lang
Adds support for free ticket filtering and custom queries on Calendar....
r1796 end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 def test_changes
get :changes, :project_id => 1
assert_response :success
Jean-Philippe Lang
Display links to Atom feeds (closes #496, #750)....
r1171 assert_not_nil assigns(:journals)
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 assert_equal 'application/atom+xml', @response.content_type
end
Jean-Philippe Lang
Added some functional tests (issues)....
r971
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_show_routing
assert_routing(
{:method => :get, :path => '/issues/64'},
:controller => 'issues', :action => 'show', :id => '64'
)
end
def test_show_routing_formatted
assert_routing(
{:method => :get, :path => '/issues/2332.pdf'},
:controller => 'issues', :action => 'show', :id => '2332', :format => 'pdf'
)
assert_routing(
{:method => :get, :path => '/issues/23123.atom'},
:controller => 'issues', :action => 'show', :id => '23123', :format => 'atom'
)
end
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 def test_show_by_anonymous
Jean-Philippe Lang
Added some functional tests (issues)....
r971 get :show, :id => 1
assert_response :success
assert_template 'show.rhtml'
assert_not_nil assigns(:issue)
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 assert_equal Issue.find(1), assigns(:issue)
# anonymous role is allowed to add a note
assert_tag :tag => 'form',
:descendant => { :tag => 'fieldset',
:child => { :tag => 'legend',
:content => /Notes/ } }
Jean-Philippe Lang
Added some functional tests (issues)....
r971 end
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 def test_show_by_manager
@request.session[:user_id] = 2
get :show, :id => 1
assert_response :success
assert_tag :tag => 'form',
:descendant => { :tag => 'fieldset',
:child => { :tag => 'legend',
:content => /Change properties/ } },
:descendant => { :tag => 'fieldset',
:child => { :tag => 'legend',
:content => /Log time/ } },
:descendant => { :tag => 'fieldset',
:child => { :tag => 'legend',
:content => /Notes/ } }
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
Jean-Philippe Lang
Fixed: issue details view discloses relations to issues that the user is not allowed to view (#2589)....
r2341 def test_show_should_not_disclose_relations_to_invisible_issues
Setting.cross_project_issue_relations = '1'
IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => 'relates')
# Relation to a private project issue
IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(4), :relation_type => 'relates')
get :show, :id => 1
assert_response :success
assert_tag :div, :attributes => { :id => 'relations' },
:descendant => { :tag => 'a', :content => /#2$/ }
assert_no_tag :div, :attributes => { :id => 'relations' },
:descendant => { :tag => 'a', :content => /#4$/ }
end
Jean-Philippe Lang
FIxed: inline images not displayed in atom feeds (#3391)....
r2669 def test_show_atom
get :show, :id => 2, :format => 'atom'
assert_response :success
assert_template 'changes.rxml'
# Inline image
Eric Davis
Fixed failing test in #3391. Quotes (") are html escaped....
r2670 assert @response.body.include?("&lt;img src=&quot;http://test.host/attachments/download/10&quot; alt=&quot;&quot; /&gt;")
Jean-Philippe Lang
FIxed: inline images not displayed in atom feeds (#3391)....
r2669 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_new_routing
assert_routing(
{:method => :get, :path => '/projects/1/issues/new'},
:controller => 'issues', :action => 'new', :project_id => '1'
)
assert_recognizes(
{:controller => 'issues', :action => 'new', :project_id => '1'},
{:method => :post, :path => '/projects/1/issues'}
)
end
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030
Jean-Philippe Lang
Move PDF stuff to a single helper....
r2224 def test_show_export_to_pdf
Jean-Philippe Lang
Fixes r2226: exporting an issue with attachments to PDF raises an error (#2492)....
r2260 get :show, :id => 3, :format => 'pdf'
Jean-Philippe Lang
Move PDF stuff to a single helper....
r2224 assert_response :success
assert_equal 'application/pdf', @response.content_type
assert @response.body.starts_with?('%PDF')
assert_not_nil assigns(:issue)
end
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 def test_get_new
@request.session[:user_id] = 2
get :new, :project_id => 1, :tracker_id => 1
assert_response :success
assert_template 'new'
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 assert_tag :tag => 'input', :attributes => { :name => 'issue[custom_field_values][2]',
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076 :value => 'Default string' }
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 end
def test_get_new_without_tracker_id
@request.session[:user_id] = 2
get :new, :project_id => 1
assert_response :success
assert_template 'new'
issue = assigns(:issue)
assert_not_nil issue
assert_equal Project.find(1).trackers.first, issue.tracker
end
Jean-Philippe Lang
Fixed that some error messages were not displayed (#2866)....
r2474 def test_get_new_with_no_default_status_should_display_an_error
@request.session[:user_id] = 2
IssueStatus.delete_all
get :new, :project_id => 1
assert_response 500
assert_not_nil flash[:error]
assert_tag :tag => 'div', :attributes => { :class => /error/ },
:content => /No default issue/
end
def test_get_new_with_no_tracker_should_display_an_error
@request.session[:user_id] = 2
Tracker.delete_all
get :new, :project_id => 1
assert_response 500
assert_not_nil flash[:error]
assert_tag :tag => 'div', :attributes => { :class => /error/ },
:content => /No tracker/
end
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 def test_update_new_form
@request.session[:user_id] = 2
xhr :post, :new, :project_id => 1,
:issue => {:tracker_id => 2,
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5}
assert_response :success
assert_template 'new'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 end
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066
def test_post_new
@request.session[:user_id] = 2
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 assert_difference 'Issue.count' do
post :new, :project_id => 1,
:issue => {:tracker_id => 3,
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5,
:estimated_hours => '',
:custom_field_values => {'2' => 'Value for field 2'}}
end
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076
issue = Issue.find_by_subject('This is the test_new issue')
assert_not_nil issue
assert_equal 2, issue.author_id
Jean-Philippe Lang
Fixed: issues always created with default tracker (#1553)....
r1596 assert_equal 3, issue.tracker_id
Jean-Philippe Lang
Fixed: Updating tickets add a time log with zero hours (#1147)....
r1370 assert_nil issue.estimated_hours
Jean-Philippe Lang
Fixes custom fields display order at several places (#1768)....
r1730 v = issue.custom_values.find(:first, :conditions => {:custom_field_id => 2})
Jean-Philippe Lang
Added default value for custom fields. Fixed javascript on custom field form for project and user custom fields....
r1076 assert_not_nil v
assert_equal 'Value for field 2', v.value
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 end
Jean-Philippe Lang
Adds a 'Create and continue' button on the new issue form, that will create the issue and display the form again (#2523)....
r2263 def test_post_new_and_continue
@request.session[:user_id] = 2
post :new, :project_id => 1,
:issue => {:tracker_id => 3,
:subject => 'This is first issue',
:priority_id => 5},
:continue => ''
assert_redirected_to :controller => 'issues', :action => 'new', :tracker_id => 3
end
Jean-Philippe Lang
Prevent NoMethodError on nil class if custom_fields params is not present in IssuesController#new (#969)....
r1302 def test_post_new_without_custom_fields_param
@request.session[:user_id] = 2
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 assert_difference 'Issue.count' do
post :new, :project_id => 1,
:issue => {:tracker_id => 1,
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5}
end
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
Jean-Philippe Lang
Prevent NoMethodError on nil class if custom_fields params is not present in IssuesController#new (#969)....
r1302 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 def test_post_new_with_required_custom_field_and_without_custom_fields_param
field = IssueCustomField.find_by_name('Database')
field.update_attribute(:is_required, true)
@request.session[:user_id] = 2
post :new, :project_id => 1,
:issue => {:tracker_id => 1,
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5}
assert_response :success
assert_template 'new'
issue = assigns(:issue)
assert_not_nil issue
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 assert_equal I18n.translate('activerecord.errors.messages.invalid'), issue.errors.on(:custom_values)
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 end
Jean-Philippe Lang
Adds watchers selection on new issue form (#398). Permission 'add issue watchers' required....
r2162 def test_post_new_with_watchers
@request.session[:user_id] = 2
ActionMailer::Base.deliveries.clear
assert_difference 'Watcher.count', 2 do
post :new, :project_id => 1,
:issue => {:tracker_id => 1,
:subject => 'This is a new issue with watchers',
:description => 'This is the description',
:priority_id => 5,
:watcher_user_ids => ['2', '3']}
end
issue = Issue.find_by_subject('This is a new issue with watchers')
Jean-Philippe Lang
Slight changes in functional tests....
r2233 assert_not_nil issue
assert_redirected_to :controller => 'issues', :action => 'show', :id => issue
Jean-Philippe Lang
Adds watchers selection on new issue form (#398). Permission 'add issue watchers' required....
r2162 # Watchers added
assert_equal [2, 3], issue.watcher_user_ids.sort
assert issue.watched_by?(User.find(3))
# Watchers notified
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
assert [mail.bcc, mail.cc].flatten.include?(User.find(3).mail)
end
Eric Davis
Added observers to watch model objects for mail delivery instead of calling Mailer....
r2548 def test_post_new_should_send_a_notification
ActionMailer::Base.deliveries.clear
@request.session[:user_id] = 2
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 assert_difference 'Issue.count' do
post :new, :project_id => 1,
:issue => {:tracker_id => 3,
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5,
:estimated_hours => '',
:custom_field_values => {'2' => 'Value for field 2'}}
end
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
Eric Davis
Added observers to watch model objects for mail delivery instead of calling Mailer....
r2548
assert_equal 1, ActionMailer::Base.deliveries.size
end
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 def test_post_should_preserve_fields_values_on_validation_failure
@request.session[:user_id] = 2
post :new, :project_id => 1,
:issue => {:tracker_id => 1,
Jean-Philippe Lang
Fixes functional test broken by r2246....
r2246 # empty subject
:subject => '',
:description => 'This is a description',
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 :priority_id => 6,
:custom_field_values => {'1' => 'Oracle', '2' => 'Value for field 2'}}
assert_response :success
assert_template 'new'
Jean-Philippe Lang
Fixes functional test broken by r2246....
r2246 assert_tag :textarea, :attributes => { :name => 'issue[description]' },
:content => 'This is a description'
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 assert_tag :select, :attributes => { :name => 'issue[priority_id]' },
:child => { :tag => 'option', :attributes => { :selected => 'selected',
:value => '6' },
:content => 'High' }
# Custom fields
assert_tag :select, :attributes => { :name => 'issue[custom_field_values][1]' },
:child => { :tag => 'option', :attributes => { :selected => 'selected',
:value => 'Oracle' },
:content => 'Oracle' }
assert_tag :input, :attributes => { :name => 'issue[custom_field_values][2]',
:value => 'Value for field 2'}
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_copy_routing
assert_routing(
{:method => :get, :path => '/projects/world_domination/issues/567/copy'},
:controller => 'issues', :action => 'new', :project_id => 'world_domination', :copy_from => '567'
)
end
Jean-Philippe Lang
ProjectsController#add_issue moved to IssuesController#new....
r1066 def test_copy_issue
@request.session[:user_id] = 2
get :new, :project_id => 1, :copy_from => 1
assert_template 'new'
assert_not_nil assigns(:issue)
orig = Issue.find(1)
assert_equal orig.subject, assigns(:issue).subject
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_edit_routing
assert_routing(
{:method => :get, :path => '/issues/1/edit'},
:controller => 'issues', :action => 'edit', :id => '1'
)
assert_recognizes( #TODO: use a PUT on the issue URI isntead, need to adjust form
{:controller => 'issues', :action => 'edit', :id => '1'},
{:method => :post, :path => '/issues/1/edit'}
)
end
Jean-Philippe Lang
Added some functional tests (issues)....
r971 def test_get_edit
@request.session[:user_id] = 2
get :edit, :id => 1
assert_response :success
assert_template 'edit'
assert_not_nil assigns(:issue)
assert_equal Issue.find(1), assigns(:issue)
end
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116
def test_get_edit_with_params
@request.session[:user_id] = 2
get :edit, :id => 1, :issue => { :status_id => 5, :priority_id => 7 }
assert_response :success
assert_template 'edit'
issue = assigns(:issue)
assert_not_nil issue
assert_equal 5, issue.status_id
assert_tag :select, :attributes => { :name => 'issue[status_id]' },
:child => { :tag => 'option',
:content => 'Closed',
:attributes => { :selected => 'selected' } }
assert_equal 7, issue.priority_id
assert_tag :select, :attributes => { :name => 'issue[priority_id]' },
:child => { :tag => 'option',
:content => 'Urgent',
:attributes => { :selected => 'selected' } }
end
Jean-Philippe Lang
Adds a Reply link to each issue note (#739). Reply is pre-filled with the quoted note....
r1466
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_reply_routing
assert_routing(
{:method => :post, :path => '/issues/1/quoted'},
:controller => 'issues', :action => 'reply', :id => '1'
)
end
Jean-Philippe Lang
Adds a Reply link to each issue note (#739). Reply is pre-filled with the quoted note....
r1466 def test_reply_to_issue
@request.session[:user_id] = 2
get :reply, :id => 1
assert_response :success
assert_select_rjs :show, "update"
end
def test_reply_to_note
@request.session[:user_id] = 2
get :reply, :id => 1, :journal_id => 2
assert_response :success
assert_select_rjs :show, "update"
end
Jean-Philippe Lang
Added some functional tests (issues)....
r971
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 def test_post_edit_without_custom_fields_param
Jean-Philippe Lang
Added some functional tests (issues)....
r971 @request.session[:user_id] = 2
Jean-Philippe Lang
Add email notification to IssuesController#edit....
r1005 ActionMailer::Base.deliveries.clear
issue = Issue.find(1)
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 assert_equal '125', issue.custom_value_for(2).value
Jean-Philippe Lang
Add email notification to IssuesController#edit....
r1005 old_subject = issue.subject
new_subject = 'Subject modified by IssuesControllerTest#test_post_edit'
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 assert_difference('Journal.count') do
assert_difference('JournalDetail.count', 2) do
post :edit, :id => 1, :issue => {:subject => new_subject,
:priority_id => '6',
:category_id => '1' # no change
}
end
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Add email notification to IssuesController#edit....
r1005 issue.reload
assert_equal new_subject, issue.subject
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 # Make sure custom fields were not cleared
assert_equal '125', issue.custom_value_for(2).value
Jean-Philippe Lang
Add email notification to IssuesController#edit....
r1005
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
assert mail.subject.starts_with?("[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]")
assert mail.body.include?("Subject changed from #{old_subject} to #{new_subject}")
Jean-Philippe Lang
Added some functional tests (issues)....
r971 end
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 def test_post_edit_with_custom_field_change
@request.session[:user_id] = 2
issue = Issue.find(1)
assert_equal '125', issue.custom_value_for(2).value
assert_difference('Journal.count') do
assert_difference('JournalDetail.count', 3) do
post :edit, :id => 1, :issue => {:subject => 'Custom field change',
:priority_id => '6',
:category_id => '1', # no change
:custom_field_values => { '2' => 'New custom value' }
}
end
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Custom fields refactoring: most of code moved from controllers to models (using new module ActsAsCustomizable)....
r1578 issue.reload
assert_equal 'New custom value', issue.custom_value_for(2).value
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
assert mail.body.include?("Searchable field changed from 125 to New custom value")
end
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 def test_post_edit_with_status_and_assignee_change
Jean-Philippe Lang
Added some functional tests (issues)....
r971 issue = Issue.find(1)
assert_equal 1, issue.status_id
@request.session[:user_id] = 2
Jean-Philippe Lang
Fixed: Updating tickets add a time log with zero hours (#1147)....
r1370 assert_difference('TimeEntry.count', 0) do
post :edit,
:id => 1,
:issue => { :status_id => 2, :assigned_to_id => 3 },
:notes => 'Assigned to dlopper',
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 :time_entry => { :hours => '', :comments => '', :activity_id => TimeEntryActivity.first }
Jean-Philippe Lang
Fixed: Updating tickets add a time log with zero hours (#1147)....
r1370 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Added some functional tests (issues)....
r971 issue.reload
assert_equal 2, issue.status_id
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 j = issue.journals.find(:first, :order => 'id DESC')
Jean-Philippe Lang
Added some functional tests (issues)....
r971 assert_equal 'Assigned to dlopper', j.notes
assert_equal 2, j.details.size
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?("Status changed from New to Assigned")
Jean-Philippe Lang
Fixed: Issue status in the notify email's subject is the issue's old status, should be its new status (#3194)....
r2581 # subject should contain the new status
assert mail.subject.include?("(#{ IssueStatus.find(2).name })")
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 end
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 def test_post_edit_with_note_only
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 notes = 'Note added by IssuesControllerTest#test_update_with_note_only'
# anonymous user
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 post :edit,
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 :id => 1,
:notes => notes
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 j = Issue.find(1).journals.find(:first, :order => 'id DESC')
assert_equal notes, j.notes
assert_equal 0, j.details.size
assert_equal User.anonymous, j.user
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?(notes)
end
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 def test_post_edit_with_note_and_spent_time
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 @request.session[:user_id] = 2
spent_hours_before = Issue.find(1).spent_hours
Jean-Philippe Lang
Fixed: Updating tickets add a time log with zero hours (#1147)....
r1370 assert_difference('TimeEntry.count') do
post :edit,
:id => 1,
:notes => '2.5 hours added',
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 :time_entry => { :hours => '2.5', :comments => '', :activity_id => TimeEntryActivity.first }
Jean-Philippe Lang
Fixed: Updating tickets add a time log with zero hours (#1147)....
r1370 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030
issue = Issue.find(1)
j = issue.journals.find(:first, :order => 'id DESC')
assert_equal '2.5 hours added', j.notes
assert_equal 0, j.details.size
t = issue.time_entries.find(:first, :order => 'id DESC')
assert_not_nil t
assert_equal 2.5, t.hours
assert_equal spent_hours_before + 2.5, issue.spent_hours
end
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 def test_post_edit_with_attachment_only
Jean-Philippe Lang
File viewer for attached text files....
r1506 set_tmp_attachments_directory
Eric Davis
Fixed a failing assertion in test_post_edit_with_attachment_only that would...
r1920 # Delete all fixtured journals, a race condition can occur causing the wrong
# journal to get fetched in the next find.
Journal.delete_all
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 # anonymous user
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 post :edit,
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 :id => 1,
:notes => '',
Jean-Philippe Lang
Adds an optional description to attachments....
r1166 :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 j = Issue.find(1).journals.find(:first, :order => 'id DESC')
assert j.notes.blank?
assert_equal 1, j.details.size
assert_equal 'testfile.txt', j.details.first.value
assert_equal User.anonymous, j.user
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?('testfile.txt')
end
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 def test_post_edit_with_no_change
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 issue = Issue.find(1)
issue.journals.clear
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Merged IssuesController #edit and #update into a single actions....
r1115 post :edit,
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 :id => 1,
:notes => ''
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'show', :id => '1'
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030
issue.reload
assert issue.journals.empty?
# No email should be sent
assert ActionMailer::Base.deliveries.empty?
Jean-Philippe Lang
Added some functional tests (issues)....
r971 end
Eric Davis
Added observers to watch model objects for mail delivery instead of calling Mailer....
r2548
def test_post_edit_should_send_a_notification
@request.session[:user_id] = 2
ActionMailer::Base.deliveries.clear
issue = Issue.find(1)
old_subject = issue.subject
new_subject = 'Subject modified by IssuesControllerTest#test_post_edit'
post :edit, :id => 1, :issue => {:subject => new_subject,
:priority_id => '6',
:category_id => '1' # no change
}
assert_equal 1, ActionMailer::Base.deliveries.size
end
Jean-Philippe Lang
Fixed: no error is raised when entering invalid hours on the issue update form (#2465)....
r2249
def test_post_edit_with_invalid_spent_time
@request.session[:user_id] = 2
notes = 'Note added by IssuesControllerTest#test_post_edit_with_invalid_spent_time'
assert_no_difference('Journal.count') do
post :edit,
:id => 1,
:notes => notes,
:time_entry => {"comments"=>"", "activity_id"=>"", "hours"=>"2z"}
end
assert_response :success
assert_template 'edit'
assert_tag :textarea, :attributes => { :name => 'notes' },
:content => notes
assert_tag :input, :attributes => { :name => 'time_entry[hours]', :value => "2z" }
end
Jean-Philippe Lang
Fixed: issue bulk edit view broken by r2726 (#3347)....
r2640
def test_get_bulk_edit
@request.session[:user_id] = 2
get :bulk_edit, :ids => [1, 2]
assert_response :success
assert_template 'bulk_edit'
end
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116
def test_bulk_edit
@request.session[:user_id] = 2
# update issues priority
Jean-Philippe Lang
Ability to bulk edit custom fields of type 'list' (#461)....
r2314 post :bulk_edit, :ids => [1, 2], :priority_id => 7,
:assigned_to_id => '',
:custom_field_values => {'2' => ''},
:notes => 'Bulk editing'
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 assert_response 302
# check that the issues were updated
assert_equal [7, 7], Issue.find_all_by_id([1, 2]).collect {|i| i.priority.id}
Jean-Philippe Lang
Ability to bulk edit custom fields of type 'list' (#461)....
r2314
issue = Issue.find(1)
journal = issue.journals.find(:first, :order => 'created_on DESC')
assert_equal '125', issue.custom_value_for(2).value
assert_equal 'Bulk editing', journal.notes
assert_equal 1, journal.details.size
end
Eric Davis
Added observers to watch model objects for mail delivery instead of calling Mailer....
r2548 def test_bullk_edit_should_send_a_notification
@request.session[:user_id] = 2
ActionMailer::Base.deliveries.clear
post(:bulk_edit,
{
:ids => [1, 2],
:priority_id => 7,
:assigned_to_id => '',
:custom_field_values => {'2' => ''},
:notes => 'Bulk editing'
})
assert_response 302
assert_equal 2, ActionMailer::Base.deliveries.size
end
Jean-Philippe Lang
Fixed: issue status bulk edit broken by r2726 (#3347)....
r2645 def test_bulk_edit_status
@request.session[:user_id] = 2
# update issues priority
post :bulk_edit, :ids => [1, 2], :priority_id => '',
:assigned_to_id => '',
:status_id => '5',
:notes => 'Bulk editing status'
assert_response 302
issue = Issue.find(1)
assert issue.closed?
end
Jean-Philippe Lang
Ability to bulk edit custom fields of type 'list' (#461)....
r2314 def test_bulk_edit_custom_field
@request.session[:user_id] = 2
# update issues priority
post :bulk_edit, :ids => [1, 2], :priority_id => '',
:assigned_to_id => '',
:custom_field_values => {'2' => '777'},
:notes => 'Bulk editing custom field'
assert_response 302
issue = Issue.find(1)
journal = issue.journals.find(:first, :order => 'created_on DESC')
assert_equal '777', issue.custom_value_for(2).value
assert_equal 1, journal.details.size
assert_equal '125', journal.details.first.old_value
assert_equal '777', journal.details.first.value
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 end
Jean-Philippe Lang
Fixed: when bulk editing, setting "Assigned to" to "nobody" causes an sql error with Postgresql (#935)....
r1279 def test_bulk_unassign
assert_not_nil Issue.find(2).assigned_to
@request.session[:user_id] = 2
# unassign issues
post :bulk_edit, :ids => [1, 2], :notes => 'Bulk unassigning', :assigned_to_id => 'none'
assert_response 302
# check that the issues were updated
assert_nil Issue.find(2).assigned_to
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_move_routing
assert_routing(
{:method => :get, :path => '/issues/1/move'},
:controller => 'issues', :action => 'move', :id => '1'
)
assert_recognizes(
{:controller => 'issues', :action => 'move', :id => '1'},
{:method => :post, :path => '/issues/1/move'}
)
end
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 def test_move_one_issue_to_another_project
Jean-Philippe Lang
Fixed: issue move by non-admin broken by r2726 (#3354)....
r2639 @request.session[:user_id] = 2
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 post :move, :id => 1, :new_project_id => 2
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 assert_equal 2, Issue.find(1).project_id
end
def test_bulk_move_to_another_project
Jean-Philippe Lang
Fixed: issue move by non-admin broken by r2726 (#3354)....
r2639 @request.session[:user_id] = 2
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 post :move, :ids => [1, 2], :new_project_id => 2
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 # Issues moved to project 2
assert_equal 2, Issue.find(1).project_id
assert_equal 2, Issue.find(2).project_id
# No tracker change
assert_equal 1, Issue.find(1).tracker_id
assert_equal 2, Issue.find(2).tracker_id
end
def test_bulk_move_to_another_tracker
Jean-Philippe Lang
Fixed: issue move by non-admin broken by r2726 (#3354)....
r2639 @request.session[:user_id] = 2
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 post :move, :ids => [1, 2], :new_tracker_id => 2
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 assert_equal 2, Issue.find(1).tracker_id
assert_equal 2, Issue.find(2).tracker_id
end
Jean-Philippe Lang
Adds ability to bulk copy issues (#1847)....
r2311
def test_bulk_copy_to_another_project
Jean-Philippe Lang
Fixed: issue move by non-admin broken by r2726 (#3354)....
r2639 @request.session[:user_id] = 2
Jean-Philippe Lang
Adds ability to bulk copy issues (#1847)....
r2311 assert_difference 'Issue.count', 2 do
assert_no_difference 'Project.find(1).issues.count' do
post :move, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'}
end
end
assert_redirected_to 'projects/ecookbook/issues'
end
Jean-Philippe Lang
Added some functional tests (issues)....
r971
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 def test_context_menu_one_issue
@request.session[:user_id] = 2
get :context_menu, :ids => [1]
assert_response :success
assert_template 'context_menu'
assert_tag :tag => 'a', :content => 'Edit',
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :attributes => { :href => '/issues/1/edit',
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 :class => 'icon-edit' }
assert_tag :tag => 'a', :content => 'Closed',
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :attributes => { :href => '/issues/1/edit?issue%5Bstatus_id%5D=5',
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 :class => '' }
assert_tag :tag => 'a', :content => 'Immediate',
Jean-Philippe Lang
One-click bulk edition using the issue list context menu within the same project (#1770)....
r1764 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;priority_id=8',
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 :class => '' }
assert_tag :tag => 'a', :content => 'Dave Lopper',
Jean-Philippe Lang
One-click bulk edition using the issue list context menu within the same project (#1770)....
r1764 :attributes => { :href => '/issues/bulk_edit?assigned_to_id=3&amp;ids%5B%5D=1',
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 :class => '' }
assert_tag :tag => 'a', :content => 'Copy',
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :attributes => { :href => '/projects/ecookbook/issues/1/copy',
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 :class => 'icon-copy' }
assert_tag :tag => 'a', :content => 'Move',
:attributes => { :href => '/issues/move?ids%5B%5D=1',
:class => 'icon-move' }
assert_tag :tag => 'a', :content => 'Delete',
:attributes => { :href => '/issues/destroy?ids%5B%5D=1',
:class => 'icon-del' }
end
def test_context_menu_one_issue_by_anonymous
get :context_menu, :ids => [1]
assert_response :success
assert_template 'context_menu'
assert_tag :tag => 'a', :content => 'Delete',
:attributes => { :href => '#',
:class => 'icon-del disabled' }
end
def test_context_menu_multiple_issues_of_same_project
@request.session[:user_id] = 2
get :context_menu, :ids => [1, 2]
assert_response :success
assert_template 'context_menu'
assert_tag :tag => 'a', :content => 'Edit',
:attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2',
:class => 'icon-edit' }
Jean-Philippe Lang
One-click bulk edition using the issue list context menu within the same project (#1770)....
r1764 assert_tag :tag => 'a', :content => 'Immediate',
:attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;ids%5B%5D=2&amp;priority_id=8',
:class => '' }
assert_tag :tag => 'a', :content => 'Dave Lopper',
:attributes => { :href => '/issues/bulk_edit?assigned_to_id=3&amp;ids%5B%5D=1&amp;ids%5B%5D=2',
:class => '' }
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 assert_tag :tag => 'a', :content => 'Move',
:attributes => { :href => '/issues/move?ids%5B%5D=1&amp;ids%5B%5D=2',
:class => 'icon-move' }
assert_tag :tag => 'a', :content => 'Delete',
:attributes => { :href => '/issues/destroy?ids%5B%5D=1&amp;ids%5B%5D=2',
:class => 'icon-del' }
end
def test_context_menu_multiple_issues_of_different_project
Jean-Philippe Lang
Added some functional tests (issues)....
r971 @request.session[:user_id] = 2
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 get :context_menu, :ids => [1, 2, 4]
Jean-Philippe Lang
Added some functional tests (issues)....
r971 assert_response :success
assert_template 'context_menu'
Jean-Philippe Lang
Issue list now supports bulk edit/move/delete (#563, #607). For now, issues from different projects can not be bulk edited/moved/deleted at once....
r1116 assert_tag :tag => 'a', :content => 'Delete',
:attributes => { :href => '#',
:class => 'icon-del disabled' }
Jean-Philippe Lang
Added some functional tests (issues)....
r971 end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_destroy_routing
assert_recognizes( #TODO: use DELETE on issue URI (need to change forms)
{:controller => 'issues', :action => 'destroy', :id => '1'},
{:method => :post, :path => '/issues/1/destroy'}
)
end
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 def test_destroy_issue_with_no_time_entries
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 assert_nil TimeEntry.find_by_issue_id(2)
Jean-Philippe Lang
Added some functional tests (issues)....
r971 @request.session[:user_id] = 2
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 post :destroy, :id => 2
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Custom fields (list and boolean) can be used as criteria in time report (#1012)....
r1325 assert_nil Issue.find_by_id(2)
Jean-Philippe Lang
Added some functional tests (issues)....
r971 end
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 def test_destroy_issues_with_time_entries
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3]
assert_response :success
assert_template 'destroy'
assert_not_nil assigns(:hours)
assert Issue.find_by_id(1) && Issue.find_by_id(3)
end
def test_destroy_issues_and_destroy_time_entries
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'destroy'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_nil TimeEntry.find_by_id([1, 2])
end
def test_destroy_issues_and_assign_time_entries_to_project
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'nullify'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_nil TimeEntry.find(1).issue_id
assert_nil TimeEntry.find(2).issue_id
end
def test_destroy_issues_and_reassign_time_entries_to_another_issue
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'reassign', :reassign_to_id => 2
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :project_id => 'ecookbook'
Jean-Philippe Lang
Let the user choose when deleting issues with reported hours (closes #734, #71):...
r1168 assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_equal 2, TimeEntry.find(1).issue_id
assert_equal 2, TimeEntry.find(2).issue_id
end
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 end