Fix #3243: Don't create new note versions when nothing is changed.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user