@@ -227,6 +227,13 class Issue < ActiveRecord::Base | |||
|
227 | 227 | @custom_field_values = nil |
|
228 | 228 | result |
|
229 | 229 | end |
|
230 | ||
|
231 | def description=(arg) | |
|
232 | if arg.is_a?(String) | |
|
233 | arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n") | |
|
234 | end | |
|
235 | write_attribute(:description, arg) | |
|
236 | end | |
|
230 | 237 | |
|
231 | 238 | # Overrides attributes= so that tracker_id gets assigned first |
|
232 | 239 | def attributes_with_tracker_first=(new_attributes, *args) |
@@ -870,10 +877,13 class Issue < ActiveRecord::Base | |||
|
870 | 877 | if @current_journal |
|
871 | 878 | # attributes changes |
|
872 | 879 | (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| |
|
880 | before = @issue_before_change.send(c) | |
|
881 | after = send(c) | |
|
882 | next if before == after || (before.blank? && after.blank?) | |
|
873 | 883 | @current_journal.details << JournalDetail.new(:property => 'attr', |
|
874 | 884 | :prop_key => c, |
|
875 | 885 | :old_value => @issue_before_change.send(c), |
|
876 |
:value => send(c)) |
|
|
886 | :value => send(c)) | |
|
877 | 887 | } |
|
878 | 888 | # custom fields changes |
|
879 | 889 | custom_values.each {|c| |
@@ -733,6 +733,27 class IssueTest < ActiveSupport::TestCase | |||
|
733 | 733 | assert_equal old_description, detail.old_value |
|
734 | 734 | assert_equal new_description, detail.value |
|
735 | 735 | end |
|
736 | ||
|
737 | def test_blank_descriptions_should_not_be_journalized | |
|
738 | IssueCustomField.delete_all | |
|
739 | Issue.update_all("description = NULL", "id=1") | |
|
740 | ||
|
741 | i = Issue.find(1) | |
|
742 | i.init_journal(User.find(2)) | |
|
743 | i.subject = "blank description" | |
|
744 | i.description = "\r\n" | |
|
745 | ||
|
746 | assert_difference 'Journal.count', 1 do | |
|
747 | assert_difference 'JournalDetail.count', 1 do | |
|
748 | i.save! | |
|
749 | end | |
|
750 | end | |
|
751 | end | |
|
752 | ||
|
753 | def test_description_eol_should_be_normalized | |
|
754 | i = Issue.new(:description => "CR \r LF \n CRLF \r\n") | |
|
755 | assert_equal "CR \r\n LF \r\n CRLF \r\n", i.description | |
|
756 | end | |
|
736 | 757 | |
|
737 | 758 | def test_saving_twice_should_not_duplicate_journal_details |
|
738 | 759 | i = Issue.find(:first) |
General Comments 0
You need to be logged in to leave comments.
Login now