diff --git a/submissions/test_utils.py b/submissions/test_utils.py index 25d31705305480bd5361fc899fef60a87650240a..816350fe787a34cfac9cb4d6d24dbf200367669e 100644 --- a/submissions/test_utils.py +++ b/submissions/test_utils.py @@ -1,10 +1,15 @@ +import datetime + from django.test import TestCase, tag 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 UnassignedSubmissionFactory +from .constants import STATUS_UNASSIGNED, STATUS_RESUBMISSION_INCOMING +from .exceptions import CycleUpdateDeadlineError +from .factories import UnassignedSubmissionFactory, ResubmittedSubmissionFactory +from .utils import GeneralSubmissionCycle class TestDefaultSubmissionCycle(TestCase): @@ -14,8 +19,13 @@ class TestDefaultSubmissionCycle(TestCase): ''' def setUp(self): + """Basics for all tests""" + self.submission_date = datetime.date.today() add_groups_and_permissions() - self.new_submission = UnassignedSubmissionFactory.build() + ContributorFactory.create_batch(5) + self.new_submission = UnassignedSubmissionFactory( + dates__submission=self.submission_date + ) @tag('cycle', 'core') def test_init_submission_factory_is_valid(self): @@ -28,8 +38,56 @@ class TestDefaultSubmissionCycle(TestCase): self.assertIsInstance(self.new_submission.submitted_by, Contributor) self.assertFalse(self.new_submission.open_for_commenting) self.assertFalse(self.new_submission.open_for_reporting) + self.assertEqual(self.new_submission.submission_date, self.submission_date) @tag('cycle', 'core') - def test_initial_cycle_required_actions(self): + def test_initial_cycle_required_actions_and_deadline(self): """Test valid required actions for default cycle.""" + self.assertIsInstance(self.new_submission.cycle, GeneralSubmissionCycle) + + # Explicit: No actions required if no EIC is assigned yet self.assertFalse(self.new_submission.cycle.get_required_actions()) + + # Two weeks deadline check + self.new_submission.cycle.update_deadline() + real_report_deadline = self.submission_date + datetime.timedelta(days=28) + self.assertEqual(self.new_submission.reporting_deadline.day, real_report_deadline.day) + self.assertEqual(self.new_submission.reporting_deadline.month, real_report_deadline.month) + self.assertEqual(self.new_submission.reporting_deadline.year, real_report_deadline.year) + self.assertIsInstance(self.new_submission.reporting_deadline, datetime.datetime) + + +class TestResubmissionSubmissionCycle(TestCase): + ''' + This TestCase should act as a master test to check all steps in the + submission's cycle: resubmission. + ''' + + def setUp(self): + """Basics for all tests""" + self.submission_date = datetime.date.today() + add_groups_and_permissions() + ContributorFactory.create_batch(5) + self.new_submission = ResubmittedSubmissionFactory( + dates__submission=self.submission_date + ) + + @tag('cycle', 'core') + def test_init_resubmission_factory_is_valid(self): + """Ensure valid fields for the factory.""" + return + self.assertEqual(self.new_submission.status, STATUS_RESUBMISSION_INCOMING) + self.assertIsInstance(self.new_submission.editor_in_charge, Contributor) + self.assertTrue(self.new_submission.is_current) + self.assertTrue(self.new_submission.is_resubmission) + self.assertIsNot(self.new_submission.title, '') + self.assertIsInstance(self.new_submission.submitted_by, Contributor) + self.assertTrue(self.new_submission.open_for_commenting) + self.assertTrue(self.new_submission.open_for_reporting) + self.assertEqual(self.new_submission.submission_date, self.submission_date) + + @tag('cycle', 'core') + def test_initial_cycle_required_actions_and_deadline(self): + """Test valid required actions for default cycle.""" + return + self.assertRaises(CycleUpdateDeadlineError, self.new_submission.update_deadline())