@custom_field_values = nil
result
end
+
+ def description=(arg)
+ if arg.is_a?(String)
+ arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n")
+ end
+ write_attribute(:description, arg)
+ end
# Overrides attributes= so that tracker_id gets assigned first
def attributes_with_tracker_first=(new_attributes, *args)
if @current_journal
# attributes changes
(Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c|
+ before = @issue_before_change.send(c)
+ after = send(c)
+ next if before == after || (before.blank? && after.blank?)
@current_journal.details << JournalDetail.new(:property => 'attr',
:prop_key => c,
:old_value => @issue_before_change.send(c),
- :value => send(c)) unless send(c)==@issue_before_change.send(c)
+ :value => send(c))
}
# custom fields changes
custom_values.each {|c|
assert_equal old_description, detail.old_value
assert_equal new_description, detail.value
end
+
+ def test_blank_descriptions_should_not_be_journalized
+ IssueCustomField.delete_all
+ Issue.update_all("description = NULL", "id=1")
+
+ i = Issue.find(1)
+ i.init_journal(User.find(2))
+ i.subject = "blank description"
+ i.description = "\r\n"
+
+ assert_difference 'Journal.count', 1 do
+ assert_difference 'JournalDetail.count', 1 do
+ i.save!
+ end
+ end
+ end
+
+ def test_description_eol_should_be_normalized
+ i = Issue.new(:description => "CR \r LF \n CRLF \r\n")
+ assert_equal "CR \r\n LF \r\n CRLF \r\n", i.description
+ end
def test_saving_twice_should_not_duplicate_journal_details
i = Issue.find(:first)