SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 71e5bf64 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Repair commentaries tests

parent bd8a6764
No related branches found
No related tags found
No related merge requests found
......@@ -4,9 +4,10 @@ __license__ = "AGPL v3"
import factory
from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS, SCIPOST_APPROACHES
from scipost.constants import SCIPOST_APPROACHES
from scipost.models import Contributor
from common.helpers import random_arxiv_identifier_with_version_number, random_external_doi
from ontology.models import AcademicField, Specialty
from .constants import COMMENTARY_TYPES
from .models import Commentary
......@@ -22,8 +23,7 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory):
vetted = True
vetted_by = factory.SubFactory('scipost.factories.ContributorFactory')
type = factory.Iterator(COMMENTARY_TYPES, getter=lambda c: c[0])
discipline = factory.Iterator(SCIPOST_DISCIPLINES[2][1], getter=lambda c: c[0])
subject_area = factory.Iterator(SCIPOST_SUBJECT_AREAS[0][1], getter=lambda c: c[0])
acad_field = factory.SubFactory('ontology.factories.AcademicFieldFactory')
approaches = factory.Iterator(SCIPOST_APPROACHES, getter=lambda c: [c[0],])
open_for_commenting = True
......@@ -49,6 +49,21 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory):
# url = factory.lazy_attribute(lambda o: 'https://arxiv.org/abs/%s' % o.arxiv_identifier)
@classmethod
def create(cls, **kwargs):
if AcademicField.objects.count() < 5:
from ontology.factories import AcademicFieldactory
AcademicFieldFactory.create_batch(5)
if Specialty.objects.count() < 5:
from ontology.factories import SpecialtyFactory
SpecialtyFactory.create_batch(5)
return super().create(**kwargs)
@factory.post_generation
def add_specialties(self, create, extracted, **kwargs):
if create:
self.specialties.set(Specialty.objects.order_by('?')[:3])
@factory.post_generation
def create_urls(self, create, extracted, **kwargs):
self.parse_links_into_urls(commit=create)
......
......@@ -14,6 +14,7 @@ from ..factories import CommentaryFactory, UnvettedCommentaryFactory,\
from ..forms import RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm,\
ArxivQueryForm, RequestArxivPreprintForm
from ..models import Commentary
from common.helpers import random_arxiv_identifier_with_version_number, random_external_doi
from common.helpers.test import add_groups_and_permissions
......@@ -166,13 +167,18 @@ class TestRequestPublishedArticleForm(TestCase):
def setUp(self):
add_groups_and_permissions()
ContributorFactory.create_batch(5)
factory_instance = UnvettedCommentaryFactory.build()
factory_instance = UnvettedCommentaryFactory()
self.user = UserFactory()
self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm)
self.valid_form_data['acad_field'] = factory_instance.acad_field.id
self.valid_form_data['specialties'] = [s.id for s in factory_instance.specialties.all()]
def test_valid_data_is_valid(self):
"""Test valid form for DOI"""
form = RequestPublishedArticleForm(self.valid_form_data)
form = RequestPublishedArticleForm({
**self.valid_form_data,
**{'pub_DOI': random_external_doi}
})
self.assertTrue(form.is_valid())
def test_doi_that_already_has_commentary_page_is_invalid(self):
......@@ -193,13 +199,21 @@ class TestRequestArxivPreprintForm(TestCase):
def setUp(self):
add_groups_and_permissions()
ContributorFactory.create_batch(5)
factory_instance = UnvettedUnpublishedCommentaryFactory.build()
# Next line: don't use .build() because the instance must be saved so that
# factory_instance.specialties.all() below works out.
factory_instance = UnvettedUnpublishedCommentaryFactory()
self.user = UserFactory()
self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm)
self.valid_form_data['arxiv_identifier'] = factory_instance.arxiv_identifier
self.valid_form_data['acad_field'] = factory_instance.acad_field.id
self.valid_form_data['specialties'] = [s.id for s in factory_instance.specialties.all()]
def test_valid_data_is_valid(self):
form = RequestArxivPreprintForm(self.valid_form_data)
form = RequestArxivPreprintForm({
**self.valid_form_data,
**{'arxiv_identifier': random_arxiv_identifier_with_version_number}
})
print("form.errors:\n\t%s" % form.errors)
self.assertTrue(form.is_valid())
def test_identifier_that_already_has_commentary_page_is_invalid(self):
......
......@@ -143,14 +143,13 @@ class BrowseCommentariesTest(TestCase):
def setUp(self):
add_groups_and_permissions()
CommentaryFactory(discipline='physics', requested_by=ContributorFactory())
CommentaryFactory(requested_by=ContributorFactory())
self.view_url = reverse('commentaries:browse', kwargs={
'discipline': 'physics',
'nrweeksback': '1'
})
def test_response_list(self):
'''Test if the browse view is passing commentaries to anoymous users.'''
'''Test if the browse view is passing commentaries to anonymous users.'''
response = self.client.get(self.view_url)
self.assertEqual(response.status_code, 200)
......
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