diff --git a/commentaries/forms.py b/commentaries/forms.py index 87ee558e0e0df1244524a0eb2ec296a6710549e4..22632aafe7c5a939b6704e2c6fb51af4cbac3e6a 100644 --- a/commentaries/forms.py +++ b/commentaries/forms.py @@ -161,17 +161,6 @@ class VetCommentaryForm(forms.Form): if self.commentary_is_refused(): return self.COMMENTARY_REFUSAL_DICT[int(self.cleaned_data['refusal_reason'])] - def process_commentary(self): - """Vet the commentary or delete it from the database""" - if self.commentary_is_accepted(): - self.commentary.vetted = True - self.commentary.vetted_by = Contributor.objects.get(user=self.user) - self.commentary.save() - return self.commentary - elif self.commentary_is_modified() or self.commentary_is_refused(): - self.commentary.delete() - return None - def commentary_is_accepted(self): self._form_is_cleaned() return int(self.cleaned_data['action_option']) == self.ACTION_ACCEPT @@ -184,6 +173,17 @@ class VetCommentaryForm(forms.Form): self._form_is_cleaned() return int(self.cleaned_data['action_option']) == self.ACTION_REFUSE + def process_commentary(self): + """Vet the commentary or delete it from the database""" + if self.commentary_is_accepted(): + self.commentary.vetted = True + self.commentary.vetted_by = Contributor.objects.get(user=self.user) + self.commentary.save() + return self.commentary + elif self.commentary_is_modified() or self.commentary_is_refused(): + self.commentary.delete() + return None + class CommentarySearchForm(forms.Form): """Search for Commentary specified by user""" diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py index ec77c05699e47fd7d916155dfd84c0eb4d89dc51..29147a1d5f7b039d436186292db483ac693b55eb 100644 --- a/commentaries/test_forms.py +++ b/commentaries/test_forms.py @@ -2,6 +2,7 @@ from django.test import TestCase from scipost.factories import UserFactory +from .models import Commentary from .factories import VettedCommentaryFactory, UnVettedCommentaryFactory from .forms import RequestCommentaryForm, VetCommentaryForm from common.helpers import model_form_data @@ -13,18 +14,55 @@ class TestVetCommentaryForm(TestCase): def setUp(self): self.commentary = UnVettedCommentaryFactory.create() self.user = UserFactory() - - def test_valid_form(self): - """Test valid form data and return Commentary when accepted""" - form_data = { + self.form_data = { 'action_option': VetCommentaryForm.ACTION_ACCEPT, 'refusal_reason': VetCommentaryForm.REFUSAL_EMPTY, 'email_response_field': 'Lorem Ipsum' } - print( form_data) - form = VetCommentaryForm(form_data, commentary_id=self.commentary.id, user=self.user) - print(form.errors) + + def test_valid_accepted_form(self): + """Test valid form data and return Commentary""" + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Accept Commentary in database + form.process_commentary() + self.assertTrue(Commentary.objects.vetted().exists()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + def test_valid_modified_form(self): + """Test valid form data and delete Commentary""" + self.form_data['action_option'] = VetCommentaryForm.ACTION_MODIFY + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Delete the Commentary + form.process_commentary() + self.assertTrue(form.commentary_is_modified()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + def test_valid_rejected_form(self): + """Test valid form data and delete Commentary""" + self.form_data['action_option'] = VetCommentaryForm.ACTION_REFUSE + self.form_data['refusal_reason'] = VetCommentaryForm.REFUSAL_UNTRACEBLE + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Delete the Commentary + form.process_commentary() + self.assertTrue(form.commentary_is_refused()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + # Refusal choice is ok + refusal_reason_inserted = VetCommentaryForm.COMMENTARY_REFUSAL_DICT[\ + VetCommentaryForm.REFUSAL_UNTRACEBLE] + self.assertEqual(form.get_refusal_reason(), refusal_reason_inserted) class TestRequestCommentaryForm(TestCase):