From 71e3b1f9288c7851162d2f1c8a848a750b68d033 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 18 Mar 2014 12:56:36 -0700 Subject: [PATCH] fixes #1897 --- app/models/note.rb | 26 ++++++++++++++++++++++++++ test/unit/note_test.rb | 8 ++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/models/note.rb b/app/models/note.rb index cf714a82c..22a5ab7dd 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -155,6 +155,14 @@ class Note < ActiveRecord::Base CurrentUser.user.increment!(:note_update_count) update_column(:version, version.to_i + 1) + if merge_version? + merge_version + else + create_new_version + end + end + + def create_new_version versions.create( :updater_id => updater_id, :updater_ip_addr => updater_ip_addr, @@ -169,6 +177,24 @@ class Note < ActiveRecord::Base ) end + def merge_version + prev = versions.last + prev.update_attributes( + :x => x, + :y => y, + :width => width, + :height => height, + :is_active => is_active, + :body => body, + :version => version + ) + end + + def merge_version? + prev = versions.last + prev && prev.updater_id == CurrentUser.user.id && prev.updated_at > 1.hour.ago + end + def revert_to(version) self.x = version.x self.y = version.y diff --git a/test/unit/note_test.rb b/test/unit/note_test.rb index cc95acc7f..64e8db2fb 100644 --- a/test/unit/note_test.rb +++ b/test/unit/note_test.rb @@ -57,7 +57,9 @@ class NoteTest < ActiveSupport::TestCase should "create a version" do assert_difference("NoteVersion.count", 1) do - @note = FactoryGirl.create(:note, :post => @post) + Timecop.travel(1.day.from_now) do + @note = FactoryGirl.create(:note, :post => @post) + end end assert_equal(1, @note.versions.count) @@ -109,7 +111,9 @@ class NoteTest < ActiveSupport::TestCase should "create a version" do assert_difference("NoteVersion.count", 1) do - @note.update_attributes(:body => "fafafa") + Timecop.travel(1.day.from_now) do + @note.update_attributes(:body => "fafafa") + end end assert_equal(2, @note.versions.count) assert_equal(2, @note.versions.last.version)