From 519051adb33e305cf944831b9aaa271cc0cefa39 Mon Sep 17 00:00:00 2001
From: Dan Braghis <dan.braghis@torchbox.com>
Date: Fri, 22 Jun 2018 12:53:22 +0100
Subject: [PATCH] Fix issue with submitting edited draft saving old version of
 draft

---
 opentech/apply/funds/models.py           |  1 +
 opentech/apply/funds/tests/test_views.py | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py
index 645d6cd43..69820493f 100644
--- a/opentech/apply/funds/models.py
+++ b/opentech/apply/funds/models.py
@@ -771,6 +771,7 @@ class ApplicationSubmission(WorkflowHelpers, BaseStreamForm, AbstractFormSubmiss
                 revision = self.draft_revision
                 revision.form_data = self.form_data
                 revision.author = by
+                revision.save()
 
             if draft:
                 self.form_data = self.live_revision.form_data
diff --git a/opentech/apply/funds/tests/test_views.py b/opentech/apply/funds/tests/test_views.py
index f58b9a3de..14eb31ae9 100644
--- a/opentech/apply/funds/tests/test_views.py
+++ b/opentech/apply/funds/tests/test_views.py
@@ -147,6 +147,27 @@ class TestRevisionsView(BaseSubmissionViewTestCase):
         self.assertEqual(submission.draft_revision.author, self.user)
         self.assertDictEqual(submission.live_revision.form_data, old_data)
 
+    def test_existing_draft_edit_and_submit(self):
+        submission = ApplicationSubmissionFactory(status='draft_proposal', workflow_stages=2, user=self.user)
+        draft_data = submission.raw_data.copy()
+        draft_data[submission.must_include['title']] = 'New title'
+        self.post_page(submission, {'save': True, **draft_data}, 'edit')
+
+        submission = self.refresh(submission)
+
+        new_title = 'Newer title'
+        draft_data[submission.must_include['title']] = new_title
+        self.post_page(submission, {'submit': True, **draft_data}, 'edit')
+
+        submission = self.refresh(submission)
+
+        self.maxDiff = None
+        self.assertEqual(submission.revisions.count(), 2)
+        self.assertDictEqual(submission.draft_revision.form_data, submission.from_draft().form_data)
+        self.assertDictEqual(submission.live_revision.form_data, submission.form_data)
+
+        self.assertEqual(submission.title, new_title)
+
 
 class TestRevisionList(BaseSubmissionViewTestCase):
     base_view_name = 'revisions:list'
-- 
GitLab