@@ -470,6 +470,17 class Issue < ActiveRecord::Base | |||||
470 | self.status_id = s |
|
470 | self.status_id = s | |
471 | end |
|
471 | end | |
472 | end |
|
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 | attrs = delete_unsafe_attributes(attrs, user) |
|
485 | attrs = delete_unsafe_attributes(attrs, user) | |
475 | return if attrs.empty? |
|
486 | return if attrs.empty? |
@@ -3658,6 +3658,7 class IssuesControllerTest < ActionController::TestCase | |||||
3658 |
|
3658 | |||
3659 | @request.session[:user_id] = 2 |
|
3659 | @request.session[:user_id] = 2 | |
3660 | # update issues assignee |
|
3660 | # update issues assignee | |
|
3661 | with_settings :issue_group_assignment => '1' do | |||
3661 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', |
|
3662 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
3662 | :issue => {:priority_id => '', |
|
3663 | :issue => {:priority_id => '', | |
3663 | :assigned_to_id => group.id, |
|
3664 | :assigned_to_id => group.id, | |
@@ -3666,6 +3667,7 class IssuesControllerTest < ActionController::TestCase | |||||
3666 | assert_response 302 |
|
3667 | assert_response 302 | |
3667 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} |
|
3668 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |
3668 | end |
|
3669 | end | |
|
3670 | end | |||
3669 |
|
3671 | |||
3670 | def test_bulk_update_on_different_projects |
|
3672 | def test_bulk_update_on_different_projects | |
3671 | @request.session[:user_id] = 2 |
|
3673 | @request.session[:user_id] = 2 | |
@@ -4048,7 +4050,7 class IssuesControllerTest < ActionController::TestCase | |||||
4048 | assert_no_difference 'Project.find(1).issues.count' do |
|
4050 | assert_no_difference 'Project.find(1).issues.count' do | |
4049 | post :bulk_update, :ids => [1, 2], :copy => '1', |
|
4051 | post :bulk_update, :ids => [1, 2], :copy => '1', | |
4050 | :issue => { |
|
4052 | :issue => { | |
4051 |
:project_id => '2', :tracker_id => '', :assigned_to_id => ' |
|
4053 | :project_id => '2', :tracker_id => '', :assigned_to_id => '2', | |
4052 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' |
|
4054 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' | |
4053 | } |
|
4055 | } | |
4054 | end |
|
4056 | end | |
@@ -4058,7 +4060,7 class IssuesControllerTest < ActionController::TestCase | |||||
4058 | assert_equal 2, copied_issues.size |
|
4060 | assert_equal 2, copied_issues.size | |
4059 | copied_issues.each do |issue| |
|
4061 | copied_issues.each do |issue| | |
4060 | assert_equal 2, issue.project_id, "Project is incorrect" |
|
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 | assert_equal 1, issue.status_id, "Status is incorrect" |
|
4064 | assert_equal 1, issue.status_id, "Status is incorrect" | |
4063 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" |
|
4065 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" | |
4064 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
|
4066 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
@@ -766,6 +766,40 class IssueTest < ActiveSupport::TestCase | |||||
766 | assert_nil issue.custom_field_value(cf2) |
|
766 | assert_nil issue.custom_field_value(cf2) | |
767 | end |
|
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 | def test_editable_custom_field_values_should_return_non_readonly_custom_values |
|
803 | def test_editable_custom_field_values_should_return_non_readonly_custom_values | |
770 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', |
|
804 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', | |
771 | :is_for_all => true, :tracker_ids => [1, 2]) |
|
805 | :is_for_all => true, :tracker_ids => [1, 2]) |
General Comments 0
You need to be logged in to leave comments.
Login now