@@ -442,6 +442,17 class Issue < ActiveRecord::Base | |||
|
442 | 442 | self.status_id = s |
|
443 | 443 | end |
|
444 | 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 | 457 | attrs = delete_unsafe_attributes(attrs, user) |
|
447 | 458 | return if attrs.empty? |
@@ -3504,13 +3504,15 class IssuesControllerTest < ActionController::TestCase | |||
|
3504 | 3504 | |
|
3505 | 3505 | @request.session[:user_id] = 2 |
|
3506 | 3506 | # update issues assignee |
|
3507 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
|
3508 | :issue => {:priority_id => '', | |
|
3509 |
|
|
|
3510 |
|
|
|
3511 | ||
|
3512 | assert_response 302 | |
|
3513 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |
|
3507 | with_settings :issue_group_assignment => '1' do | |
|
3508 | post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', | |
|
3509 | :issue => {:priority_id => '', | |
|
3510 | :assigned_to_id => group.id, | |
|
3511 | :custom_field_values => {'2' => ''}} | |
|
3512 | ||
|
3513 | assert_response 302 | |
|
3514 | assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to} | |
|
3515 | end | |
|
3514 | 3516 | end |
|
3515 | 3517 | |
|
3516 | 3518 | def test_bulk_update_on_different_projects |
@@ -3850,7 +3852,7 class IssuesControllerTest < ActionController::TestCase | |||
|
3850 | 3852 | assert_no_difference 'Project.find(1).issues.count' do |
|
3851 | 3853 | post :bulk_update, :ids => [1, 2], :copy => '1', |
|
3852 | 3854 | :issue => { |
|
3853 |
:project_id => '2', :tracker_id => '', :assigned_to_id => ' |
|
|
3855 | :project_id => '2', :tracker_id => '', :assigned_to_id => '2', | |
|
3854 | 3856 | :status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31' |
|
3855 | 3857 | } |
|
3856 | 3858 | end |
@@ -3860,7 +3862,7 class IssuesControllerTest < ActionController::TestCase | |||
|
3860 | 3862 | assert_equal 2, copied_issues.size |
|
3861 | 3863 | copied_issues.each do |issue| |
|
3862 | 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 | 3866 | assert_equal 1, issue.status_id, "Status is incorrect" |
|
3865 | 3867 | assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" |
|
3866 | 3868 | assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" |
@@ -706,6 +706,40 class IssueTest < ActiveSupport::TestCase | |||
|
706 | 706 | assert_nil issue.custom_field_value(cf2) |
|
707 | 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 | 743 | def test_editable_custom_field_values_should_return_non_readonly_custom_values |
|
710 | 744 | cf1 = IssueCustomField.create!(:name => 'Writable field', :field_format => 'string', |
|
711 | 745 | :is_for_all => true, :tracker_ids => [1, 2]) |
General Comments 0
You need to be logged in to leave comments.
Login now