@@ -442,6 +442,17 class Issue < ActiveRecord::Base | |||||
442 | self.status_id = s |
|
442 | self.status_id = s | |
443 | end |
|
443 | end | |
444 | end |
|
444 | end | |
|
445 | if (u = attrs.delete('assigned_to_id')) && safe_attribute?('assigned_to_id') | |||
|
446 | if u.blank? | |||
|
447 | self.assigned_to_id = nil | |||
|
448 | else | |||
|
449 | u = u.to_i | |||
|
450 | if assignable_users.any?{|assignable_user| assignable_user.id == u} | |||
|
451 | self.assigned_to_id = u | |||
|
452 | end | |||
|
453 | end | |||
|
454 | end | |||
|
455 | ||||
445 |
|
456 | |||
446 | attrs = delete_unsafe_attributes(attrs, user) |
|
457 | attrs = delete_unsafe_attributes(attrs, user) | |
447 | return if attrs.empty? |
|
458 | return if attrs.empty? |
@@ -3504,13 +3504,15 class IssuesControllerTest < ActionController::TestCase | |||||
3504 |
|
3504 | |||
3505 | @request.session[:user_id] = 2 |
|
3505 | @request.session[:user_id] = 2 | |
3506 | # update issues assignee |
|
3506 | # update issues assignee | |
3507 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', |
|
3507 | with_settings :issue_group_assignment => '1' do | |
3508 | :issue => {:priority_id => '', |
|
3508 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
3509 |
|
|
3509 | :issue => {:priority_id => '', | |
3510 |
|
|
3510 | :assigned_to_id => group.id, | |
3511 |
|
3511 | :custom_field_values => {'2' => ''}} | ||
3512 | assert_response 302 |
|
3512 | ||
3513 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} |
|
3513 | assert_response 302 | |
|
3514 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |||
|
3515 | end | |||
3514 | end |
|
3516 | end | |
3515 |
|
3517 | |||
3516 | def test_bulk_update_on_different_projects |
|
3518 | def test_bulk_update_on_different_projects | |
@@ -3850,7 +3852,7 class IssuesControllerTest < ActionController::TestCase | |||||
3850 | assert_no_difference 'Project.find(1).issues.count' do |
|
3852 | assert_no_difference 'Project.find(1).issues.count' do | |
3851 | post :bulk_update, :ids => [1, 2], :copy => '1', |
|
3853 | post :bulk_update, :ids => [1, 2], :copy => '1', | |
3852 | :issue => { |
|
3854 | :issue => { | |
3853 |
:project_id => '2', :tracker_id => '', :assigned_to_id => ' |
|
3855 | :project_id => '2', :tracker_id => '', :assigned_to_id => '2', | |
3854 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' |
|
3856 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' | |
3855 | } |
|
3857 | } | |
3856 | end |
|
3858 | end | |
@@ -3860,7 +3862,7 class IssuesControllerTest < ActionController::TestCase | |||||
3860 | assert_equal 2, copied_issues.size |
|
3862 | assert_equal 2, copied_issues.size | |
3861 | copied_issues.each do |issue| |
|
3863 | copied_issues.each do |issue| | |
3862 | assert_equal 2, issue.project_id, "Project is incorrect" |
|
3864 | assert_equal 2, issue.project_id, "Project is incorrect" | |
3863 |
assert_equal |
|
3865 | assert_equal 2, issue.assigned_to_id, "Assigned to is incorrect" | |
3864 | assert_equal 1, issue.status_id, "Status is incorrect" |
|
3866 | assert_equal 1, issue.status_id, "Status is incorrect" | |
3865 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" |
|
3867 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" | |
3866 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
|
3868 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
@@ -706,6 +706,40 class IssueTest < ActiveSupport::TestCase | |||||
706 | assert_nil issue.custom_field_value(cf2) |
|
706 | assert_nil issue.custom_field_value(cf2) | |
707 | end |
|
707 | end | |
708 |
|
708 | |||
|
709 | def test_safe_attributes_should_ignore_unassignable_assignee | |||
|
710 | issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 3, | |||
|
711 | :status_id => 1, :priority => IssuePriority.all.first, | |||
|
712 | :subject => 'test_create') | |||
|
713 | assert issue.valid? | |||
|
714 | ||||
|
715 | # locked user, not allowed | |||
|
716 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |||
|
717 | assert_nil issue.assigned_to_id | |||
|
718 | # no member | |||
|
719 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |||
|
720 | assert_nil issue.assigned_to_id | |||
|
721 | # user 2 is ok | |||
|
722 | issue.safe_attributes=({'assigned_to_id' => '2'}) | |||
|
723 | assert_equal 2, issue.assigned_to_id | |||
|
724 | assert issue.save | |||
|
725 | ||||
|
726 | issue.reload | |||
|
727 | assert_equal 2, issue.assigned_to_id | |||
|
728 | issue.safe_attributes=({'assigned_to_id' => '5'}) | |||
|
729 | assert_equal 2, issue.assigned_to_id | |||
|
730 | issue.safe_attributes=({'assigned_to_id' => '1'}) | |||
|
731 | assert_equal 2, issue.assigned_to_id | |||
|
732 | # user 3 is also ok | |||
|
733 | issue.safe_attributes=({'assigned_to_id' => '3'}) | |||
|
734 | assert_equal 3, issue.assigned_to_id | |||
|
735 | assert issue.save | |||
|
736 | ||||
|
737 | # removal of assignee | |||
|
738 | issue.safe_attributes=({'assigned_to_id' => ''}) | |||
|
739 | assert_nil issue.assigned_to_id | |||
|
740 | assert issue.save | |||
|
741 | end | |||
|
742 | ||||
709 | def test_editable_custom_field_values_should_return_non_readonly_custom_values |
|
743 | def test_editable_custom_field_values_should_return_non_readonly_custom_values | |
710 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', |
|
744 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', | |
711 | :is_for_all => true, :tracker_ids => [1, 2]) |
|
745 | :is_for_all => true, :tracker_ids => [1, 2]) |
General Comments 0
You need to be logged in to leave comments.
Login now