@@ -320,15 +320,19 module IssuesHelper | |||||
320 | end |
|
320 | end | |
321 | strings << show_detail(detail, no_html, options) |
|
321 | strings << show_detail(detail, no_html, options) | |
322 | end |
|
322 | end | |
323 | values_by_field.each do |field, changes| |
|
323 | if values_by_field.present? | |
324 | detail = JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s) |
|
324 | multiple_values_detail = Struct.new(:property, :prop_key, :custom_field, :old_value, :value) | |
325 | detail.instance_variable_set "@custom_field", field |
|
325 | values_by_field.each do |field, changes| | |
326 | if changes[:added].any? |
|
326 | if changes[:added].any? | |
327 | detail.value = changes[:added] |
|
327 | detail = multiple_values_detail.new('cf', field.id.to_s, field) | |
328 | strings << show_detail(detail, no_html, options) |
|
328 | detail.value = changes[:added] | |
329 | elsif changes[:deleted].any? |
|
329 | strings << show_detail(detail, no_html, options) | |
330 | detail.old_value = changes[:deleted] |
|
330 | end | |
331 | strings << show_detail(detail, no_html, options) |
|
331 | if changes[:deleted].any? | |
|
332 | detail = multiple_values_detail.new('cf', field.id.to_s, field) | |||
|
333 | detail.old_value = changes[:deleted] | |||
|
334 | strings << show_detail(detail, no_html, options) | |||
|
335 | end | |||
332 | end |
|
336 | end | |
333 | end |
|
337 | end | |
334 | strings |
|
338 | strings |
@@ -296,6 +296,43 class IssuesHelperTest < ActionView::TestCase | |||||
296 | assert_equal "<strong>Precedes</strong> deleted (<i>Issue ##{issue.id}</i>)", show_detail(detail, false) |
|
296 | assert_equal "<strong>Precedes</strong> deleted (<i>Issue ##{issue.id}</i>)", show_detail(detail, false) | |
297 | end |
|
297 | end | |
298 |
|
298 | |||
|
299 | def test_details_to_strings_with_multiple_values_removed_from_custom_field | |||
|
300 | field = IssueCustomField.generate!(:name => 'User', :field_format => 'user', :multiple => true) | |||
|
301 | details = [] | |||
|
302 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => '1', :value => nil) | |||
|
303 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => '3', :value => nil) | |||
|
304 | ||||
|
305 | assert_equal ["User deleted (Dave Lopper, Redmine Admin)"], details_to_strings(details, true) | |||
|
306 | assert_equal ["<strong>User</strong> deleted (<del><i>Dave Lopper, Redmine Admin</i></del>)"], details_to_strings(details, false) | |||
|
307 | end | |||
|
308 | ||||
|
309 | def test_details_to_strings_with_multiple_values_added_to_custom_field | |||
|
310 | field = IssueCustomField.generate!(:name => 'User', :field_format => 'user', :multiple => true) | |||
|
311 | details = [] | |||
|
312 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => nil, :value => '1') | |||
|
313 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => nil, :value => '3') | |||
|
314 | ||||
|
315 | assert_equal ["User Dave Lopper, Redmine Admin added"], details_to_strings(details, true) | |||
|
316 | assert_equal ["<strong>User</strong> <i>Dave Lopper, Redmine Admin</i> added"], details_to_strings(details, false) | |||
|
317 | end | |||
|
318 | ||||
|
319 | def test_details_to_strings_with_multiple_values_added_and_removed_from_custom_field | |||
|
320 | field = IssueCustomField.generate!(:name => 'User', :field_format => 'user', :multiple => true) | |||
|
321 | details = [] | |||
|
322 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => nil, :value => '1') | |||
|
323 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => '2', :value => nil) | |||
|
324 | details << JournalDetail.new(:property => 'cf', :prop_key => field.id.to_s, :old_value => '3', :value => nil) | |||
|
325 | ||||
|
326 | assert_equal [ | |||
|
327 | "User Redmine Admin added", | |||
|
328 | "User deleted (Dave Lopper, John Smith)" | |||
|
329 | ], details_to_strings(details, true) | |||
|
330 | assert_equal [ | |||
|
331 | "<strong>User</strong> <i>Redmine Admin</i> added", | |||
|
332 | "<strong>User</strong> deleted (<del><i>Dave Lopper, John Smith</i></del>)" | |||
|
333 | ], details_to_strings(details, false) | |||
|
334 | end | |||
|
335 | ||||
299 | def test_find_name_by_reflection_should_return_nil_for_missing_record |
|
336 | def test_find_name_by_reflection_should_return_nil_for_missing_record | |
300 | assert_nil find_name_by_reflection('status', 99) |
|
337 | assert_nil find_name_by_reflection('status', 99) | |
301 | end |
|
338 | end |
General Comments 0
You need to be logged in to leave comments.
Login now