mirror of
https://github.com/redmine/redmine.git
synced 2025-11-02 19:36:00 +01:00
Option for long text custom fields to be displayed under the description field (#21705).
Based on patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@16251 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -561,8 +561,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
str_big5 = "\xa4@\xa4\xeb".force_encoding('Big5')
|
||||
issue = Issue.generate!(:subject => str_utf8)
|
||||
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
:op => '=', :values => [str_utf8],
|
||||
:format => 'csv'
|
||||
assert_equal 'text/csv; header=present', @response.content_type
|
||||
@@ -580,8 +580,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
str_utf8 = "\xe4\xbb\xa5\xe5\x86\x85".force_encoding('UTF-8')
|
||||
issue = Issue.generate!(:subject => str_utf8)
|
||||
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
:op => '=', :values => [str_utf8],
|
||||
:c => ['status', 'subject'],
|
||||
:format => 'csv',
|
||||
@@ -603,8 +603,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
str1 = "test_index_csv_tw"
|
||||
issue = Issue.generate!(:subject => str1, :estimated_hours => '1234.5')
|
||||
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
:op => '=', :values => [str1],
|
||||
:c => ['estimated_hours', 'subject'],
|
||||
:format => 'csv',
|
||||
@@ -620,8 +620,8 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
str1 = "test_index_csv_fr"
|
||||
issue = Issue.generate!(:subject => str1, :estimated_hours => '1234.5')
|
||||
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
get :index, :project_id => 1,
|
||||
:f => ['subject'],
|
||||
:op => '=', :values => [str1],
|
||||
:c => ['estimated_hours', 'subject'],
|
||||
:format => 'csv',
|
||||
@@ -696,34 +696,34 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_assigned_to
|
||||
get :index, :sort => 'assigned_to'
|
||||
assert_response :success
|
||||
|
||||
|
||||
assignees = issues_in_list.map(&:assigned_to).compact
|
||||
assert_equal assignees.sort, assignees
|
||||
assert_select 'table.issues.sort-by-assigned-to.sort-asc'
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_assigned_to_desc
|
||||
get :index, :sort => 'assigned_to:desc'
|
||||
assert_response :success
|
||||
|
||||
|
||||
assignees = issues_in_list.map(&:assigned_to).compact
|
||||
assert_equal assignees.sort.reverse, assignees
|
||||
assert_select 'table.issues.sort-by-assigned-to.sort-desc'
|
||||
end
|
||||
|
||||
|
||||
def test_index_group_by_assigned_to
|
||||
get :index, :group_by => 'assigned_to', :sort => 'priority'
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_author
|
||||
get :index, :sort => 'author', :c => ['author']
|
||||
assert_response :success
|
||||
|
||||
|
||||
authors = issues_in_list.map(&:author)
|
||||
assert_equal authors.sort, authors
|
||||
end
|
||||
@@ -731,30 +731,30 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
def test_index_sort_by_author_desc
|
||||
get :index, :sort => 'author:desc'
|
||||
assert_response :success
|
||||
|
||||
|
||||
authors = issues_in_list.map(&:author)
|
||||
assert_equal authors.sort.reverse, authors
|
||||
end
|
||||
|
||||
|
||||
def test_index_group_by_author
|
||||
get :index, :group_by => 'author', :sort => 'priority'
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_spent_hours
|
||||
get :index, :sort => 'spent_hours:desc'
|
||||
assert_response :success
|
||||
hours = issues_in_list.map(&:spent_hours)
|
||||
assert_equal hours.sort.reverse, hours
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_total_spent_hours
|
||||
get :index, :sort => 'total_spent_hours:desc'
|
||||
assert_response :success
|
||||
hours = issues_in_list.map(&:total_spent_hours)
|
||||
assert_equal hours.sort.reverse, hours
|
||||
end
|
||||
|
||||
|
||||
def test_index_sort_by_total_estimated_hours
|
||||
get :index, :sort => 'total_estimated_hours:desc'
|
||||
assert_response :success
|
||||
@@ -1093,7 +1093,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
def test_index_should_not_include_new_issue_tab_for_project_without_trackers
|
||||
with_settings :new_item_menu_tab => '1' do
|
||||
Project.find(1).trackers.clear
|
||||
|
||||
|
||||
@request.session[:user_id] = 2
|
||||
get :index, :project_id => 1
|
||||
assert_select '#main-menu a.new-issue', 0
|
||||
@@ -1105,7 +1105,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
role = Role.find(1)
|
||||
role.remove_permission! :add_issues
|
||||
role.add_permission! :copy_issues
|
||||
|
||||
|
||||
@request.session[:user_id] = 2
|
||||
get :index, :project_id => 1
|
||||
assert_select '#main-menu a.new-issue', 0
|
||||
@@ -1381,7 +1381,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
|
||||
def test_show_should_display_prev_next_links_with_query_and_sort_on_association
|
||||
@request.session[:issue_query] = {:filters => {'status_id' => {:values => [''], :operator => 'o'}}, :project_id => nil}
|
||||
|
||||
|
||||
%w(project tracker status priority author assigned_to category fixed_version).each do |assoc_sort|
|
||||
@request.session['issues_index_sort'] = assoc_sort
|
||||
|
||||
@@ -1575,6 +1575,25 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
assert_select ".cf_1 .value", :text => 'MySQL, Oracle'
|
||||
end
|
||||
|
||||
def test_show_with_full_width_layout_custom_field_should_show_field_under_description
|
||||
field = IssueCustomField.create!(:name => 'Long text', :field_format => 'text', :full_width_layout => '1',
|
||||
:tracker_ids => [1], :is_for_all => true)
|
||||
issue = Issue.find(1)
|
||||
issue.custom_field_values = {field.id => 'This is a long text'}
|
||||
issue.save!
|
||||
|
||||
get :show, :id => 1
|
||||
assert_response :success
|
||||
|
||||
# long text custom field should not be render in the attributes div
|
||||
assert_select "div.attributes div.attribute.cf_#{field.id} p strong", 0, :text => 'Long text'
|
||||
assert_select "div.attributes div.attribute.cf_#{field.id} div.value", 0, :text => 'This is a long text'
|
||||
|
||||
# long text custom field should be render under description field
|
||||
assert_select "div.description ~ div.attribute.cf_#{field.id} p strong", :text => 'Long text'
|
||||
assert_select "div.description ~ div.attribute.cf_#{field.id} div.value", :text => 'This is a long text'
|
||||
end
|
||||
|
||||
def test_show_with_multi_user_custom_field
|
||||
field = IssueCustomField.create!(:name => 'Multi user', :field_format => 'user', :multiple => true,
|
||||
:tracker_ids => [1], :is_for_all => true)
|
||||
@@ -1628,7 +1647,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
end
|
||||
|
||||
def test_show_export_to_pdf
|
||||
issue = Issue.find(3)
|
||||
issue = Issue.find(3)
|
||||
assert issue.relations.select{|r| r.other_issue(issue).visible?}.present?
|
||||
get :show, :id => 3, :format => 'pdf'
|
||||
assert_response :success
|
||||
@@ -2076,7 +2095,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
get :new, :project_id => 'invalid'
|
||||
assert_response 404
|
||||
end
|
||||
|
||||
|
||||
def test_new_with_parent_id_should_only_propose_valid_trackers
|
||||
@request.session[:user_id] = 2
|
||||
t = Tracker.find(3)
|
||||
@@ -2625,7 +2644,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
:custom_field_values => {'2' => 'Value for field 2'}}
|
||||
end
|
||||
assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
|
||||
|
||||
|
||||
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||
end
|
||||
end
|
||||
@@ -2899,7 +2918,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
assert_select 'option[value="1"][selected=selected]', :text => 'eCookbook'
|
||||
assert_select 'option[value="2"]:not([selected])', :text => 'OnlineStore'
|
||||
end
|
||||
assert_select 'input[name=?][value=?]', 'issue[subject]', orig.subject
|
||||
assert_select 'input[name=?][value=?]', 'issue[subject]', orig.subject
|
||||
assert_select 'input[name=copy_from][value="1"]'
|
||||
end
|
||||
end
|
||||
@@ -3194,7 +3213,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
def test_get_edit_should_display_the_time_entry_form_with_log_time_permission
|
||||
@request.session[:user_id] = 2
|
||||
Role.find_by_name('Manager').update_attribute :permissions, [:view_issues, :edit_issues, :log_time]
|
||||
|
||||
|
||||
get :edit, :id => 1
|
||||
assert_select 'input[name=?]', 'time_entry[hours]'
|
||||
end
|
||||
@@ -3202,7 +3221,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
def test_get_edit_should_not_display_the_time_entry_form_without_log_time_permission
|
||||
@request.session[:user_id] = 2
|
||||
Role.find_by_name('Manager').remove_permission! :log_time
|
||||
|
||||
|
||||
get :edit, :id => 1
|
||||
assert_select 'input[name=?]', 'time_entry[hours]', 0
|
||||
end
|
||||
@@ -3847,7 +3866,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
assert_response :redirect
|
||||
assert_redirected_to :controller => 'issues', :action => 'show', :id => issue.id
|
||||
end
|
||||
|
||||
|
||||
def test_put_update_should_redirect_with_previous_and_next_issue_ids_params
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
@@ -3901,17 +3920,17 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
|
||||
assert_select 'select[name=?]', 'issue[project_id]'
|
||||
assert_select 'input[name=?]', 'issue[parent_issue_id]'
|
||||
|
||||
|
||||
# Project specific custom field, date type
|
||||
field = CustomField.find(9)
|
||||
assert !field.is_for_all?
|
||||
assert_equal 'date', field.field_format
|
||||
assert_select 'input[name=?]', 'issue[custom_field_values][9]'
|
||||
|
||||
|
||||
# System wide custom field
|
||||
assert CustomField.find(1).is_for_all?
|
||||
assert_select 'select[name=?]', 'issue[custom_field_values][1]'
|
||||
|
||||
|
||||
# Be sure we don't display inactive IssuePriorities
|
||||
assert ! IssuePriority.find(15).active?
|
||||
assert_select 'select[name=?]', 'issue[priority_id]' do
|
||||
@@ -4115,7 +4134,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
:issue => {:priority_id => '',
|
||||
:assigned_to_id => group.id,
|
||||
:custom_field_values => {'2' => ''}}
|
||||
|
||||
|
||||
assert_response 302
|
||||
assert_equal [group, group], Issue.where(:id => [1, 2]).collect {|i| i.assigned_to}
|
||||
end
|
||||
@@ -4421,7 +4440,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
assert_select 'option[value="2"]'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_bulk_copy_to_another_project
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'Issue.count', 2 do
|
||||
@@ -4474,7 +4493,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
:assigned_to_id => 2)
|
||||
]
|
||||
assert_difference 'Issue.count', issues.size do
|
||||
post :bulk_update, :ids => issues.map(&:id), :copy => '1',
|
||||
post :bulk_update, :ids => issues.map(&:id), :copy => '1',
|
||||
:issue => {
|
||||
:project_id => '', :tracker_id => '', :assigned_to_id => '',
|
||||
:status_id => '', :start_date => '', :due_date => ''
|
||||
@@ -4506,7 +4525,7 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'Issue.count', 2 do
|
||||
assert_no_difference 'Project.find(1).issues.count' do
|
||||
post :bulk_update, :ids => [1, 2], :copy => '1',
|
||||
post :bulk_update, :ids => [1, 2], :copy => '1',
|
||||
:issue => {
|
||||
:project_id => '2', :tracker_id => '', :assigned_to_id => '2',
|
||||
:status_id => '1', :start_date => '2009-12-01', :due_date => '2009-12-31'
|
||||
|
||||
Reference in New Issue
Block a user