From cb0443792b10598e173c30221c90d87fc3a3acbd Mon Sep 17 00:00:00 2001 From: Sam Saffron <sam.saffron@gmail.com> Date: Thu, 17 Oct 2019 17:41:28 +1100 Subject: [PATCH] DEV: correct revision debouncer for backup draft We were debouncing on update_at which we kept on pushing forward, this was leading to not enough revisions. --- app/models/draft.rb | 2 +- spec/models/draft_spec.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/draft.rb b/app/models/draft.rb index 287d25c263a..f05cb8b7fe8 100644 --- a/app/models/draft.rb +++ b/app/models/draft.rb @@ -137,7 +137,7 @@ class Draft < ActiveRecord::Base ).create BackupDraftPost.create!(user_id: user.id, key: key, post_id: post.id) end - elsif post.updated_at > 5.minutes.ago + elsif post.last_version_at > 5.minutes.ago # bypass all validations here to maximize speed post.update_columns( raw: draft_body, diff --git a/spec/models/draft_spec.rb b/spec/models/draft_spec.rb index b65c20c3b74..fff8b8d5795 100644 --- a/spec/models/draft_spec.rb +++ b/spec/models/draft_spec.rb @@ -19,13 +19,17 @@ describe Draft do Draft.set(user, "new_private_message", 0, draft.to_json) draft["reply"] = "test" * 100 + + half_grace = (SiteSetting.editing_grace_period / 2 + 1).seconds + + freeze_time half_grace.from_now Draft.set(user, "new_private_message", 77, draft.to_json) draft_post = BackupDraftPost.find_by(user_id: user.id, key: "new_private_message").post expect(draft_post.revisions.count).to eq(0) - freeze_time 10.minutes.from_now + freeze_time half_grace.from_now # this should trigger a post revision as 10 minutes have passed draft["reply"] = "hello"