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" ...@@ -4,9 +4,10 @@ __license__ = "AGPL v3"
import factory 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 scipost.models import Contributor
from common.helpers import random_arxiv_identifier_with_version_number, random_external_doi 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 .constants import COMMENTARY_TYPES
from .models import Commentary from .models import Commentary
...@@ -22,8 +23,7 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory): ...@@ -22,8 +23,7 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory):
vetted = True vetted = True
vetted_by = factory.SubFactory('scipost.factories.ContributorFactory') vetted_by = factory.SubFactory('scipost.factories.ContributorFactory')
type = factory.Iterator(COMMENTARY_TYPES, getter=lambda c: c[0]) type = factory.Iterator(COMMENTARY_TYPES, getter=lambda c: c[0])
discipline = factory.Iterator(SCIPOST_DISCIPLINES[2][1], getter=lambda c: c[0]) acad_field = factory.SubFactory('ontology.factories.AcademicFieldFactory')
subject_area = factory.Iterator(SCIPOST_SUBJECT_AREAS[0][1], getter=lambda c: c[0])
approaches = factory.Iterator(SCIPOST_APPROACHES, getter=lambda c: [c[0],]) approaches = factory.Iterator(SCIPOST_APPROACHES, getter=lambda c: [c[0],])
open_for_commenting = True open_for_commenting = True
...@@ -49,6 +49,21 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory): ...@@ -49,6 +49,21 @@ class BaseCommentaryFactory(factory.django.DjangoModelFactory):
# url = factory.lazy_attribute(lambda o: 'https://arxiv.org/abs/%s' % o.arxiv_identifier) # 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 @factory.post_generation
def create_urls(self, create, extracted, **kwargs): def create_urls(self, create, extracted, **kwargs):
self.parse_links_into_urls(commit=create) self.parse_links_into_urls(commit=create)
......
...@@ -14,6 +14,7 @@ from ..factories import CommentaryFactory, UnvettedCommentaryFactory,\ ...@@ -14,6 +14,7 @@ from ..factories import CommentaryFactory, UnvettedCommentaryFactory,\
from ..forms import RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm,\ from ..forms import RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm,\
ArxivQueryForm, RequestArxivPreprintForm ArxivQueryForm, RequestArxivPreprintForm
from ..models import Commentary 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 from common.helpers.test import add_groups_and_permissions
...@@ -166,13 +167,18 @@ class TestRequestPublishedArticleForm(TestCase): ...@@ -166,13 +167,18 @@ class TestRequestPublishedArticleForm(TestCase):
def setUp(self): def setUp(self):
add_groups_and_permissions() add_groups_and_permissions()
ContributorFactory.create_batch(5) ContributorFactory.create_batch(5)
factory_instance = UnvettedCommentaryFactory.build() factory_instance = UnvettedCommentaryFactory()
self.user = UserFactory() self.user = UserFactory()
self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm) 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): def test_valid_data_is_valid(self):
"""Test valid form for DOI""" """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()) self.assertTrue(form.is_valid())
def test_doi_that_already_has_commentary_page_is_invalid(self): def test_doi_that_already_has_commentary_page_is_invalid(self):
...@@ -193,13 +199,21 @@ class TestRequestArxivPreprintForm(TestCase): ...@@ -193,13 +199,21 @@ class TestRequestArxivPreprintForm(TestCase):
def setUp(self): def setUp(self):
add_groups_and_permissions() add_groups_and_permissions()
ContributorFactory.create_batch(5) 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.user = UserFactory()
self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm) self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm)
self.valid_form_data['arxiv_identifier'] = factory_instance.arxiv_identifier 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): 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()) self.assertTrue(form.is_valid())
def test_identifier_that_already_has_commentary_page_is_invalid(self): def test_identifier_that_already_has_commentary_page_is_invalid(self):
......
...@@ -143,14 +143,13 @@ class BrowseCommentariesTest(TestCase): ...@@ -143,14 +143,13 @@ class BrowseCommentariesTest(TestCase):
def setUp(self): def setUp(self):
add_groups_and_permissions() add_groups_and_permissions()
CommentaryFactory(discipline='physics', requested_by=ContributorFactory()) CommentaryFactory(requested_by=ContributorFactory())
self.view_url = reverse('commentaries:browse', kwargs={ self.view_url = reverse('commentaries:browse', kwargs={
'discipline': 'physics',
'nrweeksback': '1' 'nrweeksback': '1'
}) })
def test_response_list(self): 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) response = self.client.get(self.view_url)
self.assertEqual(response.status_code, 200) 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