@@ -495,6 +495,17 class Issue < ActiveRecord::Base | |||||
495 | if new_record? && !statuses_allowed.include?(status) |
|
495 | if new_record? && !statuses_allowed.include?(status) | |
496 | self.status = statuses_allowed.first || default_status |
|
496 | self.status = statuses_allowed.first || default_status | |
497 | end |
|
497 | end | |
|
498 | if (u = attrs.delete('assigned_to_id')) && safe_attribute?('assigned_to_id') | |||
|
499 | if u.blank? | |||
|
500 | self.assigned_to_id = nil | |||
|
501 | else | |||
|
502 | u = u.to_i | |||
|
503 | if assignable_users.any?{|assignable_user| assignable_user.id == u} | |||
|
504 | self.assigned_to_id = u | |||
|
505 | end | |||
|
506 | end | |||
|
507 | end | |||
|
508 | ||||
498 |
|
509 | |||
499 | attrs = delete_unsafe_attributes(attrs, user) |
|
510 | attrs = delete_unsafe_attributes(attrs, user) | |
500 | return if attrs.empty? |
|
511 | return if attrs.empty? |
@@ -3860,13 +3860,15 class IssuesControllerTest < ActionController::TestCase | |||||
3860 |
|
3860 | |||
3861 | @request.session[:user_id] = 2 |
|
3861 | @request.session[:user_id] = 2 | |
3862 | # update issues assignee |
|
3862 | # update issues assignee | |
3863 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', |
|
3863 | with_settings :issue_group_assignment => '1' do | |
3864 | :issue => {:priority_id => '', |
|
3864 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
3865 |
|
|
3865 | :issue => {:priority_id => '', | |
3866 |
|
|
3866 | :assigned_to_id => group.id, | |
3867 |
|
3867 | :custom_field_values => {'2' => ''}} | ||
3868 | assert_response 302 |
|
3868 | ||
3869 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} |
|
3869 | assert_response 302 | |
|
3870 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |||
|
3871 | end | |||
3870 | end |
|
3872 | end | |
3871 |
|
3873 | |||
3872 | def test_bulk_update_on_different_projects |
|
3874 | def test_bulk_update_on_different_projects | |
@@ -4250,7 +4252,7 class IssuesControllerTest < ActionController::TestCase | |||||
4250 | assert_no_difference 'Project.find(1).issues.count' do |
|
4252 | assert_no_difference 'Project.find(1).issues.count' do | |
4251 | post :bulk_update, :ids => [1, 2], :copy => '1', |
|
4253 | post :bulk_update, :ids => [1, 2], :copy => '1', | |
4252 | :issue => { |
|
4254 | :issue => { | |
4253 |
:project_id => '2', :tracker_id => '', :assigned_to_id => ' |
|
4255 | :project_id => '2', :tracker_id => '', :assigned_to_id => '2', | |
4254 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' |
|
4256 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' | |
4255 | } |
|
4257 | } | |
4256 | end |
|
4258 | end | |
@@ -4260,7 +4262,7 class IssuesControllerTest < ActionController::TestCase | |||||
4260 | assert_equal 2, copied_issues.size |
|
4262 | assert_equal 2, copied_issues.size | |
4261 | copied_issues.each do |issue| |
|
4263 | copied_issues.each do |issue| | |
4262 | assert_equal 2, issue.project_id, "Project is incorrect" |
|
4264 | assert_equal 2, issue.project_id, "Project is incorrect" | |
4263 |
assert_equal |
|
4265 | assert_equal 2, issue.assigned_to_id, "Assigned to is incorrect" | |
4264 | assert_equal 1, issue.status_id, "Status is incorrect" |
|
4266 | assert_equal 1, issue.status_id, "Status is incorrect" | |
4265 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" |
|
4267 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" | |
4266 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
|
4268 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
@@ -790,6 +790,40 class IssueTest < ActiveSupport::TestCase | |||||
790 | assert_nil issue.custom_field_value(cf2) |
|
790 | assert_nil issue.custom_field_value(cf2) | |
791 | end |
|
791 | end | |
792 |
|
792 | |||
|
793 | def test_safe_attributes_should_ignore_unassignable_assignee | |||
|
794 | issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, | |||
|
795 | :status_id => 1, :priority => IssuePriority.all.first, | |||
|
796 | :subject => 'test_create') | |||
|
797 | assert issue.valid? | |||
|
798 | ||||
|
799 | # locked user, not allowed | |||
|
800 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |||
|
801 | assert_nil issue.assigned_to_id | |||
|
802 | # no member | |||
|
803 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |||
|
804 | assert_nil issue.assigned_to_id | |||
|
805 | # user 2 is ok | |||
|
806 | issue.safe_attributes=({'assigned_to_id' => '2'}) | |||
|
807 | assert_equal 2, issue.assigned_to_id | |||
|
808 | assert issue.save | |||
|
809 | ||||
|
810 | issue.reload | |||
|
811 | assert_equal 2, issue.assigned_to_id | |||
|
812 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |||
|
813 | assert_equal 2, issue.assigned_to_id | |||
|
814 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |||
|
815 | assert_equal 2, issue.assigned_to_id | |||
|
816 | # user 3 is also ok | |||
|
817 | issue.safe_attributes=({'assigned_to_id' => '3'}) | |||
|
818 | assert_equal 3, issue.assigned_to_id | |||
|
819 | assert issue.save | |||
|
820 | ||||
|
821 | # removal of assignee | |||
|
822 | issue.safe_attributes=({'assigned_to_id' => ''}) | |||
|
823 | assert_nil issue.assigned_to_id | |||
|
824 | assert issue.save | |||
|
825 | end | |||
|
826 | ||||
793 | def test_editable_custom_field_values_should_return_non_readonly_custom_values |
|
827 | def test_editable_custom_field_values_should_return_non_readonly_custom_values | |
794 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', |
|
828 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', | |
795 | :is_for_all => true, :tracker_ids => [1, 2]) |
|
829 | :is_for_all => true, :tracker_ids => [1, 2]) |
General Comments 0
You need to be logged in to leave comments.
Login now