Skip to content
Snippets Groups Projects
Commit de648f9b authored by Dan Braghis's avatar Dan Braghis
Browse files

Improve tests

parent 8bb1da21
No related branches found
No related tags found
No related merge requests found
......@@ -55,12 +55,8 @@ class BaseDeterminationForm(forms.ModelForm):
cleaned_data = super().clean()
if self.draft_button_name not in self.data:
try:
outcome = int(cleaned_data['outcome'])
except KeyError:
outcome = -1
action_name = self.request.GET.get('action') or self.get_action_name_from_determination(outcome)
action_name = self.request.GET.get('action') or \
self.get_action_name_from_determination(int(cleaned_data['outcome']))
if action_name:
transition = self.submission.get_transition(action_name)
if not can_proceed(transition):
......@@ -83,6 +79,7 @@ class BaseDeterminationForm(forms.ModelForm):
self.instance.validate_unique()
except ValidationError as e:
self._update_errors(e)
def save(self, commit=True):
self.instance.outcome = int(self.cleaned_data['outcome'])
self.instance.message = self.cleaned_data['message']
......
from django.test import TestCase, RequestFactory
from django.urls import reverse
from opentech.apply.determinations.models import ACCEPTED
from opentech.apply.users.tests.factories import StaffFactory, UserFactory
from .factories import DeterminationFactory
from opentech.apply.funds.tests.factories import ApplicationSubmissionFactory
......@@ -82,21 +83,29 @@ class DeterminationFormTestCase(BaseTestCase):
def test_cant_resubmit_determination(self):
submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user)
determination = DeterminationFactory(submission=submission, author=self.user, submitted=True)
response = self.post_page(submission, {'data': 'value', 'determination': determination.outcome}, 'form')
response = self.post_page(submission, {'data': 'value', 'outcome': determination.outcome}, 'form')
self.assertTrue(response.context['has_determination_response'])
self.assertContains(response, 'You have already added a determination for this submission')
def test_can_edit_draft_determination(self):
submission = ApplicationSubmissionFactory(status='in_discussion', lead=self.user)
determination = DeterminationFactory(submission=submission, author=self.user)
response = self.post_page(submission, {'data': 'value', 'determination': determination.outcome}, 'form')
self.assertFalse(response.context['has_determination_response'])
self.assertEqual(response.context['title'], 'Update Determination draft')
DeterminationFactory(submission=submission, author=self.user)
response = self.post_page(submission, {
'data': 'value',
'outcome': ACCEPTED,
'message': 'Accepted determination draft message',
'save_draft': True
}, 'form')
self.assertContains(response, 'Accepted')
self.assertContains(response, reverse(self.url_name.format('form'), kwargs=self.get_kwargs(submission)))
self.assertContains(response, 'Accepted determination draft message')
def test_cannot_edit_draft_determination_if_not_lead(self):
submission = ApplicationSubmissionFactory(status='in_discussion')
determination = DeterminationFactory(submission=submission, author=self.user)
response = self.post_page(submission, {'data': 'value', 'determination': determination.outcome}, 'form')
response = self.post_page(submission, {'data': 'value', 'outcome': determination.outcome}, 'form')
self.assertEqual(response.status_code, 403)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment