diff --git a/app/models/note.rb b/app/models/note.rb index 1a6f8130b..00142815a 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -146,6 +146,7 @@ class Note < ApplicationRecord end def create_version + return unless versioned_attributes_changed? User.where(id: CurrentUser.id).update_all("note_update_count = note_update_count + 1") CurrentUser.reload @@ -158,6 +159,10 @@ class Note < ApplicationRecord end end + def versioned_attributes_changed? + new_record? || x_changed? || y_changed? || width_changed? || height_changed? || is_active_changed? || body_changed? + end + def create_new_version versions.create( :updater_id => updater_id, diff --git a/test/unit/note_test.rb b/test/unit/note_test.rb index 7b817f758..c750c4b89 100644 --- a/test/unit/note_test.rb +++ b/test/unit/note_test.rb @@ -153,6 +153,14 @@ class NoteTest < ActiveSupport::TestCase assert_equal(["Post is note locked"], @note.errors.full_messages) end end + + context "without making any changes" do + should "not create a new version" do + assert_no_difference("@note.versions.count") do + @note.save + end + end + end end context "when notes have been vandalized by one user" do