diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py index 645d6cd431545e363c627bbfd4f69bdfe45e48f7..69820493f54b97bde4829bbde1df4f11d0b0f402 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 f58b9a3deb0579cb561d669405abf76bee544ab6..14eb31ae93efe41ad12bb37f015676e13b1aa7d4 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'