From d757c12f42c0854858d2c0787cbb5f7121d6ca42 Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Sat, 13 May 2017 20:01:55 +0200 Subject: [PATCH] Add tests for submission listview --- submissions/constants.py | 9 ++++++--- submissions/factories.py | 24 ++++++++++++++++-------- submissions/test_utils.py | 6 +++--- submissions/test_views.py | 33 ++++++++++++++++++++++++++++++++- 4 files changed, 57 insertions(+), 15 deletions(-) diff --git a/submissions/constants.py b/submissions/constants.py index da15bf7ac..ffb506708 100644 --- a/submissions/constants.py +++ b/submissions/constants.py @@ -6,6 +6,9 @@ STATUS_AWAITING_ED_REC = 'awaiting_ed_rec' STATUS_REVIEW_CLOSED = 'review_closed' STATUS_ACCEPTED = 'accepted' STATUS_PUBLISHED = 'published' +STATUS_RESUBMITTED = 'resubmitted' +STATUS_RESUBMITTED_REJECTED = 'resubmitted_and_rejected' +STATUS_RESUBMITTED_REJECTED_VISIBLE = 'resubmitted_and_rejected_visible' SUBMISSION_STATUS = ( (STATUS_UNASSIGNED, 'Unassigned, undergoing pre-screening'), (STATUS_RESUBMISSION_INCOMING, 'Resubmission incoming'), @@ -14,9 +17,9 @@ SUBMISSION_STATUS = ( (STATUS_REVIEW_CLOSED, 'Review period closed, editorial recommendation pending'), # If revisions required: resubmission creates a new Submission object (STATUS_REVISION_REQUESTED, 'Editor-in-charge has requested revision'), - ('resubmitted', 'Has been resubmitted'), - ('resubmitted_and_rejected', 'Has been resubmitted and subsequently rejected'), - ('resubmitted_and_rejected_visible', + (STATUS_RESUBMITTED, 'Has been resubmitted'), + (STATUS_RESUBMITTED_REJECTED, 'Has been resubmitted and subsequently rejected'), + (STATUS_RESUBMITTED_REJECTED_VISIBLE, 'Has been resubmitted and subsequently rejected (still publicly visible)'), # If acceptance/rejection: ('voting_in_preparation', 'Voting in preparation (eligible Fellows being selected)'), diff --git a/submissions/factories.py b/submissions/factories.py index da936a2e7..9eb4eb4f2 100644 --- a/submissions/factories.py +++ b/submissions/factories.py @@ -8,7 +8,7 @@ from journals.constants import SCIPOST_JOURNALS_DOMAINS from common.helpers import random_arxiv_identifier_without_version_number, random_scipost_journal from .constants import STATUS_UNASSIGNED, STATUS_EIC_ASSIGNED, STATUS_RESUBMISSION_INCOMING,\ - STATUS_PUBLISHED, SUBMISSION_TYPE + STATUS_PUBLISHED, SUBMISSION_TYPE, STATUS_RESUBMITTED from .models import Submission from faker import Faker @@ -71,9 +71,7 @@ class SubmissionFactory(factory.django.DjangoModelFactory): class UnassignedSubmissionFactory(SubmissionFactory): - ''' - This Submission is a 'new request' by a Contributor for its Submission. - ''' + '''This Submission is a 'new request' by a Contributor for its Submission.''' status = STATUS_UNASSIGNED @@ -92,18 +90,28 @@ class EICassignedSubmissionFactory(SubmissionFactory): class ResubmittedSubmissionFactory(SubmissionFactory): - ''' + '''This Submission is a `resubmitted` version.''' + status = STATUS_RESUBMITTED + open_for_commenting = False + open_for_reporting = False + is_current = False + is_resubmission = False + + +class ResubmissionFactory(SubmissionFactory): + """ This Submission is a newer version of a Submission which is already known by the SciPost database. - ''' + """ status = STATUS_RESUBMISSION_INCOMING open_for_commenting = True open_for_reporting = True is_resubmission = True @factory.post_generation - def alter_arxiv_fields(self, create, extracted, **kwargs): - '''Alter arxiv fields to save as version 2.''' + def fill_arxiv_fields(self, create, extracted, **kwargs): + '''Fill empty arxiv fields.''' + self.arxiv_link = 'https://arxiv.org/abs/%s' % self.arxiv_identifier_wo_vn_nr self.arxiv_identifier_w_vn_nr = '%sv2' % self.arxiv_identifier_wo_vn_nr self.arxiv_vn_nr = 2 diff --git a/submissions/test_utils.py b/submissions/test_utils.py index 36f9a5ca7..d070e6c8a 100644 --- a/submissions/test_utils.py +++ b/submissions/test_utils.py @@ -9,7 +9,7 @@ from scipost.models import Contributor from .constants import STATUS_UNASSIGNED, STATUS_RESUBMISSION_INCOMING, STATUS_AWAITING_ED_REC,\ STATUS_EIC_ASSIGNED, CYCLE_DEFAULT, CYCLE_DIRECT_REC from .exceptions import CycleUpdateDeadlineError -from .factories import UnassignedSubmissionFactory, ResubmittedSubmissionFactory +from .factories import UnassignedSubmissionFactory, ResubmissionFactory from .utils import GeneralSubmissionCycle @@ -69,7 +69,7 @@ class TestResubmissionSubmissionCycle(TestCase): self.submission_date = datetime.date.today() add_groups_and_permissions() ContributorFactory.create_batch(5) - self.submission = ResubmittedSubmissionFactory( + self.submission = ResubmissionFactory( dates__submission=self.submission_date ) @@ -108,7 +108,7 @@ class TestResubmissionDirectSubmissionCycle(TestCase): self.submission_date = datetime.date.today() add_groups_and_permissions() ContributorFactory.create_batch(5) - self.submission = ResubmittedSubmissionFactory( + self.submission = ResubmissionFactory( dates__submission=self.submission_date, refereeing_cycle=CYCLE_DIRECT_REC ) diff --git a/submissions/test_views.py b/submissions/test_views.py index ee3a64993..2d05701eb 100644 --- a/submissions/test_views.py +++ b/submissions/test_views.py @@ -4,12 +4,15 @@ from django.core.urlresolvers import reverse from django.test import TestCase from django.test import Client +from common.helpers import random_arxiv_identifier_without_version_number from common.helpers.test import add_groups_and_permissions from scipost.factories import ContributorFactory # from scipost.models import Contributor from .constants import STATUS_UNASSIGNED -from .factories import EICassignedSubmissionFactory +from .factories import UnassignedSubmissionFactory, EICassignedSubmissionFactory,\ + ResubmittedSubmissionFactory, ResubmissionFactory,\ + PublishedSubmissionFactory from .forms import SubmissionForm, SubmissionIdentifierForm from .models import Submission @@ -204,3 +207,31 @@ class SubmissionDetailTest(BaseContributorTestCase): def test_status_code_200(self): response = self.client.get(self.target) self.assertEqual(response.status_code, 200) + + +class SubmissionListTest(BaseContributorTestCase): + def test_public_list_view(self): + # Create invisible Submissions. + arxiv_id_resubmission = random_arxiv_identifier_without_version_number() + UnassignedSubmissionFactory.create() + ResubmissionFactory.create(arxiv_identifier_wo_vn_nr=arxiv_id_resubmission) + + # Create visible submissions + visible_submission_ids = [] + visible_submission_ids.append(ResubmittedSubmissionFactory + .create(arxiv_identifier_wo_vn_nr=arxiv_id_resubmission).id) + visible_submission_ids.append(EICassignedSubmissionFactory.create().id) + visible_submission_ids.append(PublishedSubmissionFactory.create().id) + + # Check with hardcoded URL as this url shouldn't change! + client = Client() + response = client.get('/submissions/') + self.assertEqual(response.status_code, 200) + + # Check submissions returned + returned_submissions_ids = [sub.id for sub in response.context['object_list']] + + # Check if submission lists are equal + returned_submissions_ids.sort() + visible_submission_ids.sort() + self.assertListEqual(returned_submissions_ids, visible_submission_ids) -- GitLab