diff --git a/app/models/issue.rb b/app/models/issue.rb index a89f23dd8..5027376f7 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1853,7 +1853,7 @@ class Issue < ActiveRecord::Base # Make sure updated_on is updated when adding a note and set updated_on now # so we can set closed_on with the same value on closing def force_updated_on_change - if @current_journal || changed? + if changed? || (@current_journal && !@current_journal.notes_and_details_empty?) self.updated_on = current_time_from_proper_timezone if new_record? self.created_on = updated_on diff --git a/app/models/journal.rb b/app/models/journal.rb index e60605161..48d06fbef 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -82,7 +82,11 @@ class Journal < ActiveRecord::Base def save(*args) journalize_changes # Do not save an empty journal - (details.empty? && notes.blank?) ? false : super + notes_and_details_empty? ? false : super + end + + def notes_and_details_empty? + notes.blank? && details.empty? end # Returns journal details that are visible to user diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index d82f6e079..5a6207d7e 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -1508,6 +1508,19 @@ class IssueTest < ActiveSupport::TestCase assert_not_equal updated_on_was, issue.updated_on end + def test_adding_journal_with_notes_and_details_empty_should_not_update_timestamp + issue = Issue.find(1) + updated_on_was = issue.updated_on + + issue.init_journal(User.first) + assert_no_difference 'Journal.count' do + assert issue.save + end + issue.reload + + assert_equal updated_on_was, issue.updated_on + end + def test_should_close_duplicates # Create 3 issues issue1 = Issue.generate!