From 16e3233dcb821d4fff4aeef45f15a63cfb602080 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Thu, 14 Jun 2018 16:22:59 +0100 Subject: [PATCH] Fixup the tests for the changes Lint Make sure the tests pass --- opentech/apply/funds/models.py | 2 +- opentech/apply/funds/tests/test_models.py | 2 +- opentech/apply/funds/tests/test_views.py | 31 ++++++++++++++++------- opentech/apply/funds/views.py | 6 ++--- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py index 8f3558e6a..ee2ccd675 100644 --- a/opentech/apply/funds/models.py +++ b/opentech/apply/funds/models.py @@ -637,7 +637,7 @@ class ApplicationSubmission(WorkflowHelpers, BaseStreamForm, AbstractFormSubmiss # We are a lab submission return getattr(self.page.specific, attribute) - def progress_application(self): + def progress_application(self, **kwargs): submission_in_db = ApplicationSubmission.objects.get(id=self.id) self.id = None diff --git a/opentech/apply/funds/tests/test_models.py b/opentech/apply/funds/tests/test_models.py index e290e9527..5626409f6 100644 --- a/opentech/apply/funds/tests/test_models.py +++ b/opentech/apply/funds/tests/test_models.py @@ -201,7 +201,7 @@ class TestFormSubmission(TestCase): page = page or self.round_page fields = page.get_form_fields() - data = {k: v for k, v in zip(fields, ['project', email, name])} + data = {k: v for k, v in zip(fields, ['project', 0, email, name])} request = self.request_factory.post('', data) request.user = user diff --git a/opentech/apply/funds/tests/test_views.py b/opentech/apply/funds/tests/test_views.py index c5d9713b5..a78795c8c 100644 --- a/opentech/apply/funds/tests/test_views.py +++ b/opentech/apply/funds/tests/test_views.py @@ -12,10 +12,15 @@ class SubmissionTestCase(TestCase): self.user = self.user_factory() self.client.force_login(self.user) - def get_submission_page(self, submission, view_name='detail'): + def submission_url(self, submission, view_name='detail'): view_name = f'funds:submissions:{ view_name }' - detail_url = reverse(view_name, kwargs={'pk': submission.id}) - return self.client.get(detail_url) + return reverse(view_name, kwargs={'pk': submission.id}) + + def get_submission_page(self, submission, view_name='detail'): + return self.client.get(self.submission_url(submission, view_name)) + + def post_submission_page(self, submission, data, view_name='detail'): + return self.client.post(self.submission_url(submission, view_name), data) class TestStaffSubmissionView(SubmissionTestCase): @@ -26,6 +31,18 @@ class TestStaffSubmissionView(SubmissionTestCase): response = self.get_submission_page(submission) self.assertContains(response, submission.title) + def test_can_progress_stage(self): + submission = ApplicationSubmissionFactory(status='concept_review_discussion', workflow_stages=2) + response = self.post_submission_page(submission, {'form-submitted-progress_form': '', 'action': 'invited_to_proposal'}) + + # Cant use refresh from DB with FSM + submission_origional = submission.__class__.objects.get(id=submission.id) + submission_next = submission_origional.next + + self.assertRedirects(response, self.submission_url(submission_next)) + self.assertEqual(submission_origional.status, 'invited_to_proposal') + self.assertEqual(submission_next.status, 'draft_proposal') + class TestApplicantSubmissionView(SubmissionTestCase): user_factory = UserFactory @@ -41,9 +58,7 @@ class TestApplicantSubmissionView(SubmissionTestCase): self.assertEqual(response.status_code, 403) def test_can_edit_own_submission(self): - submission = ApplicationSubmissionFactory(user=self.user) - submission.status = 'Proposal__invited-for-proposal__0' - submission.save() + submission = ApplicationSubmissionFactory(user=self.user, status='draft_proposal', workflow_stages=2) response = self.get_submission_page(submission, 'edit') self.assertContains(response, submission.title) @@ -53,8 +68,6 @@ class TestApplicantSubmissionView(SubmissionTestCase): self.assertEqual(response.status_code, 403) def test_cant_edit_other_submission(self): - submission = ApplicationSubmissionFactory() - submission.status='Proposal__invited-for-proposal__0' - submission.save() + submission = ApplicationSubmissionFactory(status='draft_proposal', workflow_stages=2) response = self.get_submission_page(submission, 'edit') self.assertEqual(response.status_code, 403) diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py index 78d05fa3b..52e7d7fe9 100644 --- a/opentech/apply/funds/views.py +++ b/opentech/apply/funds/views.py @@ -80,7 +80,7 @@ class ProgressSubmissionView(DelegatedViewMixin, UpdateView): pass else: if can_proceed(proposal_transition): - proposal_transition() + proposal_transition(by=self.request.user) instance.save() return HttpResponseRedirect(instance.get_absolute_url()) @@ -192,7 +192,7 @@ class SubmissionEditView(UpdateView): @property def transitions(self): - transitions = self.object.get_available_user_status_transitions(self.request.user) + transitions = self.object.get_available_user_status_transitions(self.request.user) return { transition.name: transition for transition in transitions @@ -236,7 +236,7 @@ class SubmissionEditView(UpdateView): transition = set(self.request.POST.keys()) & set(self.transitions.keys()) if transition: - transition_object =self.transitions[transition.pop()] + transition_object = self.transitions[transition.pop()] self.object.get_transition(transition_object.target)(by=self.request.user) self.object.save() -- GitLab