From 4667c698da9af84358c3da817f628cf799b62b6f Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Thu, 21 Jun 2018 10:54:57 +0100
Subject: [PATCH] Add test to prevent multiple creation of revisions for draft
 objects

---
 opentech/apply/funds/models.py            |  7 ++++++-
 opentech/apply/funds/tests/test_models.py | 12 ++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py
index 59fdc1db8..bf2926c0e 100644
--- a/opentech/apply/funds/models.py
+++ b/opentech/apply/funds/models.py
@@ -745,7 +745,12 @@ class ApplicationSubmission(WorkflowHelpers, BaseStreamForm, AbstractFormSubmiss
         self.clean_submission()
         current_data = ApplicationSubmission.objects.get(id=self.id).form_data
         if current_data != self.form_data:
-            revision = ApplicationRevision.objects.create(submission=self, form_data=self.form_data)
+            if self.live_revision == self.draft_revision:
+                revision = ApplicationRevision.objects.create(submission=self, form_data=self.form_data)
+            else:
+                revision = self.draft_revision
+                revision.form_data = self.form_data
+
             if draft:
                 self.form_data = self.live_revision.form_data
             else:
diff --git a/opentech/apply/funds/tests/test_models.py b/opentech/apply/funds/tests/test_models.py
index 9a4131538..22d1c9cde 100644
--- a/opentech/apply/funds/tests/test_models.py
+++ b/opentech/apply/funds/tests/test_models.py
@@ -405,3 +405,15 @@ class TestApplicationSubmission(TestCase):
 
         submission = self.refresh(submission)
         self.assertNotEqual(submission.title, title)
+
+    def test_draft_updated(self):
+        submission = ApplicationSubmissionFactory()
+        title = 'My new title'
+        submission.form_data = {'title': title}
+        submission.create_revision(draft=True)
+        self.assertEqual(submission.revisions.count(), 2)
+
+        title = 'My even newer title'
+        submission.form_data = {'title': title}
+        submission.create_revision(draft=True)
+        self.assertEqual(submission.revisions.count(), 2)
-- 
GitLab