From bc338efb81767061d8106337eb7093ae4e2da562 Mon Sep 17 00:00:00 2001 From: Jorran Wit <jorrandewit@outlook.com> Date: Mon, 19 Dec 2016 21:31:35 +0100 Subject: [PATCH] Add form tests for Commentaries Add first form tests using Factory to test RequestCommentaryForm. --- commentaries/factories.py | 33 ++++++++++++++++++++++++++++++ commentaries/test_forms.py | 41 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 commentaries/factories.py diff --git a/commentaries/factories.py b/commentaries/factories.py new file mode 100644 index 000000000..f0bae1a09 --- /dev/null +++ b/commentaries/factories.py @@ -0,0 +1,33 @@ +import factory + +from .models import Commentary, COMMENTARY_TYPES + +from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS +from scipost.factories import ContributorFactory +from journals.models import SCIPOST_JOURNALS_DOMAINS + + +class CommentaryFactory(factory.django.DjangoModelFactory): + class Meta: + model = Commentary + abstract = True + + requested_by = factory.SubFactory(ContributorFactory) + vetted_by = factory.SubFactory(ContributorFactory) + type = COMMENTARY_TYPES[0][0] + discipline = SCIPOST_DISCIPLINES[0][0] + domain = SCIPOST_JOURNALS_DOMAINS[0][0] + subject_area = SCIPOST_SUBJECT_AREAS[0][1][0][0] + pub_title = factory.Sequence(lambda n: "Commentary %d" % n) + pub_DOI = '10.1103/PhysRevB.92.214427' + arxiv_identifier = '1610.06911v1' + author_list = factory.Faker('name') + pub_abstract = factory.Faker('text') + + +class EmptyCommentaryFactory(CommentaryFactory): + pub_DOI = None + arxiv_identifier = None + +class VettedCommentaryFactory(CommentaryFactory): + vetted = True diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py index 2e9cb5f6b..694ce19ec 100644 --- a/commentaries/test_forms.py +++ b/commentaries/test_forms.py @@ -1 +1,42 @@ +import factory + from django.test import TestCase + +from scipost.factories import UserFactory + +from .factories import VettedCommentaryFactory +from .forms import RequestCommentaryForm +from common.helpers import model_form_data + + +class TestRequestCommentaryForm(TestCase): + fixtures = ['permissions', 'groups'] + + def setUp(self): + factory_instance = VettedCommentaryFactory.build() + self.user = UserFactory() + self.valid_form_data = model_form_data(factory_instance, RequestCommentaryForm) + + def test_valid_data_is_valid_for_arxiv(self): + """Test valid form for Arxiv identifier""" + form_data = self.valid_form_data + form_data['pub_DOI'] = '' + form = RequestCommentaryForm(form_data, user=self.user) + self.assertTrue(form.is_valid()) + + def test_valid_data_is_valid_for_DOI(self): + """Test valid form for DOI""" + form_data = self.valid_form_data + form_data['arxiv_identifier'] = '' + form = RequestCommentaryForm(form_data, user=self.user) + self.assertTrue(form.is_valid()) + + # def test_form_has_no_identifiers(self): + # """Test invalid form has no DOI nor Arxiv ID""" + # form_data = self.valid_form_data + # form_data['pub_DOI'] = '' + # form_data['arxiv_identifier'] = '' + # form = RequestCommentaryForm(form_data, user=self.user) + # form_response = form.is_valid() + # print(form_response) + # self.assertFormError(form_response, form, 'arxiv_identifier', None) -- GitLab