530 |
530 |
str_big5 = "\xa4@\xa4\xeb".force_encoding('Big5')
|
531 |
531 |
issue = Issue.generate!(:subject => str_utf8)
|
532 |
532 |
|
533 |
|
get :index, :project_id => 1,
|
534 |
|
:f => ['subject'],
|
|
533 |
get :index, :project_id => 1,
|
|
534 |
:f => ['subject'],
|
535 |
535 |
:op => '=', :values => [str_utf8],
|
536 |
536 |
:format => 'csv'
|
537 |
537 |
assert_equal 'text/csv; header=present', @response.content_type
|
... | ... | |
549 |
549 |
str_utf8 = "\xe4\xbb\xa5\xe5\x86\x85".force_encoding('UTF-8')
|
550 |
550 |
issue = Issue.generate!(:subject => str_utf8)
|
551 |
551 |
|
552 |
|
get :index, :project_id => 1,
|
553 |
|
:f => ['subject'],
|
|
552 |
get :index, :project_id => 1,
|
|
553 |
:f => ['subject'],
|
554 |
554 |
:op => '=', :values => [str_utf8],
|
555 |
555 |
:c => ['status', 'subject'],
|
556 |
556 |
:format => 'csv',
|
... | ... | |
572 |
572 |
str1 = "test_index_csv_tw"
|
573 |
573 |
issue = Issue.generate!(:subject => str1, :estimated_hours => '1234.5')
|
574 |
574 |
|
575 |
|
get :index, :project_id => 1,
|
576 |
|
:f => ['subject'],
|
|
575 |
get :index, :project_id => 1,
|
|
576 |
:f => ['subject'],
|
577 |
577 |
:op => '=', :values => [str1],
|
578 |
578 |
:c => ['estimated_hours', 'subject'],
|
579 |
579 |
:format => 'csv',
|
... | ... | |
589 |
589 |
str1 = "test_index_csv_fr"
|
590 |
590 |
issue = Issue.generate!(:subject => str1, :estimated_hours => '1234.5')
|
591 |
591 |
|
592 |
|
get :index, :project_id => 1,
|
593 |
|
:f => ['subject'],
|
|
592 |
get :index, :project_id => 1,
|
|
593 |
:f => ['subject'],
|
594 |
594 |
:op => '=', :values => [str1],
|
595 |
595 |
:c => ['estimated_hours', 'subject'],
|
596 |
596 |
:format => 'csv',
|
... | ... | |
667 |
667 |
Setting.issue_list_default_columns = %w(subject author)
|
668 |
668 |
get :index, :sort => 'tracker'
|
669 |
669 |
end
|
670 |
|
|
|
670 |
|
671 |
671 |
def test_index_sort_by_assigned_to
|
672 |
672 |
get :index, :sort => 'assigned_to'
|
673 |
673 |
assert_response :success
|
... | ... | |
675 |
675 |
assert_equal assignees.sort, assignees
|
676 |
676 |
assert_select 'table.issues.sort-by-assigned-to.sort-asc'
|
677 |
677 |
end
|
678 |
|
|
|
678 |
|
679 |
679 |
def test_index_sort_by_assigned_to_desc
|
680 |
680 |
get :index, :sort => 'assigned_to:desc'
|
681 |
681 |
assert_response :success
|
... | ... | |
683 |
683 |
assert_equal assignees.sort.reverse, assignees
|
684 |
684 |
assert_select 'table.issues.sort-by-assigned-to.sort-desc'
|
685 |
685 |
end
|
686 |
|
|
|
686 |
|
687 |
687 |
def test_index_group_by_assigned_to
|
688 |
688 |
get :index, :group_by => 'assigned_to', :sort => 'priority'
|
689 |
689 |
assert_response :success
|
690 |
690 |
end
|
691 |
|
|
|
691 |
|
692 |
692 |
def test_index_sort_by_author
|
693 |
693 |
get :index, :sort => 'author'
|
694 |
694 |
assert_response :success
|
695 |
695 |
authors = assigns(:issues).collect(&:author)
|
696 |
696 |
assert_equal authors.sort, authors
|
697 |
697 |
end
|
698 |
|
|
|
698 |
|
699 |
699 |
def test_index_sort_by_author_desc
|
700 |
700 |
get :index, :sort => 'author:desc'
|
701 |
701 |
assert_response :success
|
702 |
702 |
authors = assigns(:issues).collect(&:author)
|
703 |
703 |
assert_equal authors.sort.reverse, authors
|
704 |
704 |
end
|
705 |
|
|
|
705 |
|
706 |
706 |
def test_index_group_by_author
|
707 |
707 |
get :index, :group_by => 'author', :sort => 'priority'
|
708 |
708 |
assert_response :success
|
709 |
709 |
end
|
710 |
|
|
|
710 |
|
711 |
711 |
def test_index_sort_by_spent_hours
|
712 |
712 |
get :index, :sort => 'spent_hours:desc'
|
713 |
713 |
assert_response :success
|
714 |
714 |
hours = assigns(:issues).collect(&:spent_hours)
|
715 |
715 |
assert_equal hours.sort.reverse, hours
|
716 |
716 |
end
|
717 |
|
|
|
717 |
|
718 |
718 |
def test_index_sort_by_total_spent_hours
|
719 |
719 |
get :index, :sort => 'total_spent_hours:desc'
|
720 |
720 |
assert_response :success
|
... | ... | |
1224 |
1224 |
|
1225 |
1225 |
def test_show_should_display_prev_next_links_with_query_and_sort_on_association
|
1226 |
1226 |
@request.session[:query] = {:filters => {'status_id' => {:values => [''], :operator => 'o'}}, :project_id => nil}
|
1227 |
|
|
|
1227 |
|
1228 |
1228 |
%w(project tracker status priority author assigned_to category fixed_version).each do |assoc_sort|
|
1229 |
1229 |
@request.session['issues_index_sort'] = assoc_sort
|
1230 |
1230 |
|
... | ... | |
1442 |
1442 |
end
|
1443 |
1443 |
|
1444 |
1444 |
def test_show_export_to_pdf
|
1445 |
|
issue = Issue.find(3)
|
|
1445 |
issue = Issue.find(3)
|
1446 |
1446 |
assert issue.relations.select{|r| r.other_issue(issue).visible?}.present?
|
1447 |
1447 |
get :show, :id => 3, :format => 'pdf'
|
1448 |
1448 |
assert_response :success
|
... | ... | |
2103 |
2103 |
assert_select_error /Bar cannot be blank/i
|
2104 |
2104 |
end
|
2105 |
2105 |
|
|
2106 |
def test_create_should_validate_required_list_fields
|
|
2107 |
cf1 = IssueCustomField.create!(:name => 'Foo', :field_format => 'list', :is_for_all => true, :tracker_ids => [1, 2], :multiple => false, :possible_values => ['a', 'b'])
|
|
2108 |
cf2 = IssueCustomField.create!(:name => 'Bar', :field_format => 'list', :is_for_all => true, :tracker_ids => [1, 2], :multiple => true, :possible_values => ['a', 'b'])
|
|
2109 |
WorkflowPermission.delete_all
|
|
2110 |
WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 2, :role_id => 1, :field_name => cf1.id.to_s, :rule => 'required')
|
|
2111 |
WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 2, :role_id => 1, :field_name => cf2.id.to_s, :rule => 'required')
|
|
2112 |
@request.session[:user_id] = 2
|
|
2113 |
|
|
2114 |
assert_no_difference 'Issue.count' do
|
|
2115 |
post :create, :project_id => 1, :issue => {
|
|
2116 |
:tracker_id => 2,
|
|
2117 |
:status_id => 1,
|
|
2118 |
:subject => 'Test',
|
|
2119 |
:start_date => '',
|
|
2120 |
:due_date => '',
|
|
2121 |
:custom_field_values => {cf1.id.to_s => '', cf2.id.to_s => ['']}
|
|
2122 |
}
|
|
2123 |
assert_response :success
|
|
2124 |
assert_template 'new'
|
|
2125 |
end
|
|
2126 |
|
|
2127 |
assert_select_error /Foo cannot be blank/i
|
|
2128 |
assert_select_error /Bar cannot be blank/i
|
|
2129 |
end
|
|
2130 |
|
2106 |
2131 |
def test_create_should_ignore_readonly_fields
|
2107 |
2132 |
cf1 = IssueCustomField.create!(:name => 'Foo', :field_format => 'string', :is_for_all => true, :tracker_ids => [1, 2])
|
2108 |
2133 |
cf2 = IssueCustomField.create!(:name => 'Bar', :field_format => 'string', :is_for_all => true, :tracker_ids => [1, 2])
|
... | ... | |
2130 |
2155 |
assert_nil issue.custom_field_value(cf2)
|
2131 |
2156 |
end
|
2132 |
2157 |
|
|
2158 |
def test_create_should_ignore_readonly_list_fields
|
|
2159 |
cf1 = IssueCustomField.create!(:name => 'Foo', :field_format => 'list', :is_for_all => true, :tracker_ids => [1, 2], :multiple => false, :possible_values => ['a', 'b'])
|
|
2160 |
cf2 = IssueCustomField.create!(:name => 'Bar', :field_format => 'list', :is_for_all => true, :tracker_ids => [1, 2], :multiple => true, :possible_values => ['a', 'b'])
|
|
2161 |
WorkflowPermission.delete_all
|
|
2162 |
WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 2, :role_id => 1, :field_name => cf1.id.to_s, :rule => 'readonly')
|
|
2163 |
WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 2, :role_id => 1, :field_name => cf2.id.to_s, :rule => 'readonly')
|
|
2164 |
@request.session[:user_id] = 2
|
|
2165 |
|
|
2166 |
assert_difference 'Issue.count' do
|
|
2167 |
post :create, :project_id => 1, :issue => {
|
|
2168 |
:tracker_id => 2,
|
|
2169 |
:status_id => 1,
|
|
2170 |
:subject => 'Test',
|
|
2171 |
:start_date => '2012-07-14',
|
|
2172 |
:due_date => '2012-07-16',
|
|
2173 |
:custom_field_values => {cf1.id.to_s => 'value1', cf2.id.to_s => ['value2']}
|
|
2174 |
}
|
|
2175 |
assert_response 302
|
|
2176 |
end
|
|
2177 |
|
|
2178 |
issue = Issue.order('id DESC').first
|
|
2179 |
assert_equal nil, issue.custom_field_value(cf1)
|
|
2180 |
assert_equal [nil], issue.custom_field_value(cf2)
|
|
2181 |
end
|
|
2182 |
|
2133 |
2183 |
def test_post_create_with_watchers
|
2134 |
2184 |
@request.session[:user_id] = 2
|
2135 |
2185 |
ActionMailer::Base.deliveries.clear
|
... | ... | |
2312 |
2362 |
:custom_field_values => {'2' => 'Value for field 2'}}
|
2313 |
2363 |
end
|
2314 |
2364 |
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
|
2315 |
|
|
|
2365 |
|
2316 |
2366 |
assert_equal 1, ActionMailer::Base.deliveries.size
|
2317 |
2367 |
end
|
2318 |
2368 |
end
|
... | ... | |
2482 |
2532 |
get :new, :project_id => 1
|
2483 |
2533 |
assert_response :success
|
2484 |
2534 |
assert_template 'new'
|
2485 |
|
|
|
2535 |
|
2486 |
2536 |
issue = assigns(:issue)
|
2487 |
2537 |
assert_not_nil issue.default_status
|
2488 |
2538 |
|
... | ... | |
2862 |
2912 |
def test_get_edit_should_display_the_time_entry_form_with_log_time_permission
|
2863 |
2913 |
@request.session[:user_id] = 2
|
2864 |
2914 |
Role.find_by_name('Manager').update_attribute :permissions, [:view_issues, :edit_issues, :log_time]
|
2865 |
|
|
|
2915 |
|
2866 |
2916 |
get :edit, :id => 1
|
2867 |
2917 |
assert_select 'input[name=?]', 'time_entry[hours]'
|
2868 |
2918 |
end
|
... | ... | |
2870 |
2920 |
def test_get_edit_should_not_display_the_time_entry_form_without_log_time_permission
|
2871 |
2921 |
@request.session[:user_id] = 2
|
2872 |
2922 |
Role.find_by_name('Manager').remove_permission! :log_time
|
2873 |
|
|
|
2923 |
|
2874 |
2924 |
get :edit, :id => 1
|
2875 |
2925 |
assert_select 'input[name=?]', 'time_entry[hours]', 0
|
2876 |
2926 |
end
|
... | ... | |
3483 |
3533 |
|
3484 |
3534 |
assert_select 'select[name=?]', 'issue[project_id]'
|
3485 |
3535 |
assert_select 'input[name=?]', 'issue[parent_issue_id]'
|
3486 |
|
|
|
3536 |
|
3487 |
3537 |
# Project specific custom field, date type
|
3488 |
3538 |
field = CustomField.find(9)
|
3489 |
3539 |
assert !field.is_for_all?
|
3490 |
3540 |
assert_equal 'date', field.field_format
|
3491 |
3541 |
assert_select 'input[name=?]', 'issue[custom_field_values][9]'
|
3492 |
|
|
|
3542 |
|
3493 |
3543 |
# System wide custom field
|
3494 |
3544 |
assert CustomField.find(1).is_for_all?
|
3495 |
3545 |
assert_select 'select[name=?]', 'issue[custom_field_values][1]'
|
3496 |
|
|
|
3546 |
|
3497 |
3547 |
# Be sure we don't display inactive IssuePriorities
|
3498 |
3548 |
assert ! IssuePriority.find(15).active?
|
3499 |
3549 |
assert_select 'select[name=?]', 'issue[priority_id]' do
|
... | ... | |
3959 |
4009 |
assert_select 'option[value="2"]'
|
3960 |
4010 |
end
|
3961 |
4011 |
end
|
3962 |
|
|
|
4012 |
|
3963 |
4013 |
def test_bulk_copy_to_another_project
|
3964 |
4014 |
@request.session[:user_id] = 2
|
3965 |
4015 |
assert_difference 'Issue.count', 2 do
|
... | ... | |
4012 |
4062 |
:assigned_to_id => 3)
|
4013 |
4063 |
]
|
4014 |
4064 |
assert_difference 'Issue.count', issues.size do
|
4015 |
|
post :bulk_update, :ids => issues.map(&:id), :copy => '1',
|
|
4065 |
post :bulk_update, :ids => issues.map(&:id), :copy => '1',
|
4016 |
4066 |
:issue => {
|
4017 |
4067 |
:project_id => '', :tracker_id => '', :assigned_to_id => '',
|
4018 |
4068 |
:status_id => '', :start_date => '', :due_date => ''
|
... | ... | |
4040 |
4090 |
@request.session[:user_id] = 2
|
4041 |
4091 |
assert_difference 'Issue.count', 2 do
|
4042 |
4092 |
assert_no_difference 'Project.find(1).issues.count' do
|
4043 |
|
post :bulk_update, :ids => [1, 2], :copy => '1',
|
|
4093 |
post :bulk_update, :ids => [1, 2], :copy => '1',
|
4044 |
4094 |
:issue => {
|
4045 |
4095 |
:project_id => '2', :tracker_id => '', :assigned_to_id => '4',
|
4046 |
4096 |
:status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31'
|