@@ -470,6 +470,17 class Issue < ActiveRecord::Base | |||
|
470 | 470 | self.status_id = s |
|
471 | 471 | end |
|
472 | 472 | end |
|
473 | if (u = attrs.delete('assigned_to_id')) && safe_attribute?('assigned_to_id') | |
|
474 | if u.blank? | |
|
475 | self.assigned_to_id = nil | |
|
476 | else | |
|
477 | u = u.to_i | |
|
478 | if assignable_users.any?{|assignable_user| assignable_user.id == u} | |
|
479 | self.assigned_to_id = u | |
|
480 | end | |
|
481 | end | |
|
482 | end | |
|
483 | ||
|
473 | 484 | |
|
474 | 485 | attrs = delete_unsafe_attributes(attrs, user) |
|
475 | 486 | return if attrs.empty? |
@@ -3658,13 +3658,15 class IssuesControllerTest < ActionController::TestCase | |||
|
3658 | 3658 | |
|
3659 | 3659 | @request.session[:user_id] = 2 |
|
3660 | 3660 | # update issues assignee |
|
3661 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
|
3662 | :issue => {:priority_id => '', | |
|
3663 |
|
|
|
3664 |
|
|
|
3665 | ||
|
3666 | assert_response 302 | |
|
3667 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |
|
3661 | with_settings :issue_group_assignment => '1' do | |
|
3662 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
|
3663 | :issue => {:priority_id => '', | |
|
3664 | :assigned_to_id => group.id, | |
|
3665 | :custom_field_values => {'2' => ''}} | |
|
3666 | ||
|
3667 | assert_response 302 | |
|
3668 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |
|
3669 | end | |
|
3668 | 3670 | end |
|
3669 | 3671 | |
|
3670 | 3672 | def test_bulk_update_on_different_projects |
@@ -4048,7 +4050,7 class IssuesControllerTest < ActionController::TestCase | |||
|
4048 | 4050 | assert_no_difference 'Project.find(1).issues.count' do |
|
4049 | 4051 | post :bulk_update, :ids => [1, 2], :copy => '1', |
|
4050 | 4052 | :issue => { |
|
4051 |
:project_id => '2', :tracker_id => '', :assigned_to_id => ' |
|
|
4053 | :project_id => '2', :tracker_id => '', :assigned_to_id => '2', | |
|
4052 | 4054 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' |
|
4053 | 4055 | } |
|
4054 | 4056 | end |
@@ -4058,7 +4060,7 class IssuesControllerTest < ActionController::TestCase | |||
|
4058 | 4060 | assert_equal 2, copied_issues.size |
|
4059 | 4061 | copied_issues.each do |issue| |
|
4060 | 4062 | assert_equal 2, issue.project_id, "Project is incorrect" |
|
4061 |
assert_equal |
|
|
4063 | assert_equal 2, issue.assigned_to_id, "Assigned to is incorrect" | |
|
4062 | 4064 | assert_equal 1, issue.status_id, "Status is incorrect" |
|
4063 | 4065 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" |
|
4064 | 4066 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
@@ -766,6 +766,40 class IssueTest < ActiveSupport::TestCase | |||
|
766 | 766 | assert_nil issue.custom_field_value(cf2) |
|
767 | 767 | end |
|
768 | 768 | |
|
769 | def test_safe_attributes_should_ignore_unassignable_assignee | |
|
770 | issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, | |
|
771 | :status_id => 1, :priority => IssuePriority.all.first, | |
|
772 | :subject => 'test_create') | |
|
773 | assert issue.valid? | |
|
774 | ||
|
775 | # locked user, not allowed | |
|
776 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |
|
777 | assert_nil issue.assigned_to_id | |
|
778 | # no member | |
|
779 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |
|
780 | assert_nil issue.assigned_to_id | |
|
781 | # user 2 is ok | |
|
782 | issue.safe_attributes=({'assigned_to_id' => '2'}) | |
|
783 | assert_equal 2, issue.assigned_to_id | |
|
784 | assert issue.save | |
|
785 | ||
|
786 | issue.reload | |
|
787 | assert_equal 2, issue.assigned_to_id | |
|
788 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |
|
789 | assert_equal 2, issue.assigned_to_id | |
|
790 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |
|
791 | assert_equal 2, issue.assigned_to_id | |
|
792 | # user 3 is also ok | |
|
793 | issue.safe_attributes=({'assigned_to_id' => '3'}) | |
|
794 | assert_equal 3, issue.assigned_to_id | |
|
795 | assert issue.save | |
|
796 | ||
|
797 | # removal of assignee | |
|
798 | issue.safe_attributes=({'assigned_to_id' => ''}) | |
|
799 | assert_nil issue.assigned_to_id | |
|
800 | assert issue.save | |
|
801 | end | |
|
802 | ||
|
769 | 803 | def test_editable_custom_field_values_should_return_non_readonly_custom_values |
|
770 | 804 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', |
|
771 | 805 | :is_for_all => true, :tracker_ids => [1, 2]) |
General Comments 0
You need to be logged in to leave comments.
Login now