From 754e6d806f840d7af1c473d58ff072444dd61cad Mon Sep 17 00:00:00 2001 From: Jorran Wit <jorrandewit@outlook.com> Date: Wed, 21 Dec 2016 23:34:03 +0100 Subject: [PATCH] Fix test on false-positive test result Method test_form_with_duplicate_*'s second part gave a false-positive result as the form_data contained neither a DOI nor a Arxiv ID. The tests came back positive but actually they were not. --- commentaries/forms.py | 2 ++ commentaries/test_forms.py | 27 +++++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/commentaries/forms.py b/commentaries/forms.py index f0dcdf3a3..7cbccf60a 100644 --- a/commentaries/forms.py +++ b/commentaries/forms.py @@ -69,6 +69,8 @@ class RequestCommentaryForm(forms.ModelForm): self.existing_commentary = get_object_or_404( Commentary, arxiv_identifier=cleaned_data['arxiv_identifier']) + if not self.existing_commentary: + raise self.add_error('arxiv_identifier', msg) elif (cleaned_data['pub_DOI'] and Commentary.objects.filter(pub_DOI=cleaned_data['pub_DOI']).exists()): diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py index 30def7b93..5c5e3a40a 100644 --- a/commentaries/test_forms.py +++ b/commentaries/test_forms.py @@ -15,6 +15,11 @@ class TestRequestCommentaryForm(TestCase): self.user = UserFactory() self.valid_form_data = model_form_data(factory_instance, RequestCommentaryForm) + def empty_and_return_form_data(self, key): + """Empty specific valid_form_data field and return""" + self.valid_form_data[key] = None + return self.valid_form_data + def test_valid_data_is_valid_for_arxiv(self): """Test valid form for Arxiv identifier""" form_data = self.valid_form_data @@ -39,21 +44,31 @@ class TestRequestCommentaryForm(TestCase): self.assertTrue('arxiv_identifier' in form.errors) self.assertTrue('pub_DOI' in form.errors) - def test_form_with_duplicate_identifiers(self): - """Test form response with already existing identifiers""" + def test_form_with_duplicate_DOI(self): + """Test form response with already existing DOI""" # Create a factory instance containing Arxiv ID and DOI VettedCommentaryFactory.create() # Test duplicate DOI entry - form_data = self.valid_form_data - form_data['arxiv_identifier'] = '' + form_data = self.empty_and_return_form_data('arxiv_identifier') form = RequestCommentaryForm(form_data, user=self.user) self.assertTrue('pub_DOI' in form.errors) self.assertFalse(form.is_valid()) + # Check is existing commentary is valid + existing_commentary = form.get_existing_commentary() + self.assertEqual(existing_commentary.pub_DOI, form_data['pub_DOI']) + + def test_form_with_duplicate_arxiv_id(self): + """Test form response with already existing Arxiv ID""" + VettedCommentaryFactory.create() + # Test duplicate Arxiv entry - form_data = self.valid_form_data - form_data['pub_DOI'] = '' + form_data = self.empty_and_return_form_data('pub_DOI') form = RequestCommentaryForm(form_data, user=self.user) self.assertTrue('arxiv_identifier' in form.errors) self.assertFalse(form.is_valid()) + + # Check is existing commentary is valid + existing_commentary = form.get_existing_commentary() + self.assertEqual(existing_commentary.arxiv_identifier, form_data['arxiv_identifier']) -- GitLab