diff --git a/submissions/templates/submissions/new_submission.html b/submissions/templates/submissions/new_submission.html index ba80d4cb1826f76836ba35354c8836d075c9e9dd..a9088e3a801a71a72ce839026d10441e7c98096f 100644 --- a/submissions/templates/submissions/new_submission.html +++ b/submissions/templates/submissions/new_submission.html @@ -54,7 +54,6 @@ $(document).ready(function(){ <div class="row mb-5"> <div class="col-12"> {% if perms.scipost.can_submit_manuscript %} - {% if form.arxiv_link.value %} <form id="full_submission_form" action="{% url 'submissions:submit_manuscript' %}" method="post"> {% csrf_token %} @@ -64,6 +63,7 @@ $(document).ready(function(){ </p> <input type="submit" class="btn btn-secondary"/> </form> + {% else %} {% endif %} {% else %} diff --git a/submissions/test_views.py b/submissions/test_views.py index 0ef83d5262cfc786d5645b0cded81010e9a3e410..249c7a38de3d188ed1f65abb33c78eb77d566064 100644 --- a/submissions/test_views.py +++ b/submissions/test_views.py @@ -4,9 +4,12 @@ from django.test import Client from common.helpers.test import add_groups_and_permissions from scipost.factories import ContributorFactory -from scipost.models import Contributor +# from scipost.models import Contributor +from .constants import STATUS_UNASSIGNED from .factories import EICassignedSubmissionFactory +from .forms import SubmissionForm, SubmissionIdentifierForm +from .models import Submission class BaseContributorTestCase(TestCase): @@ -20,44 +23,66 @@ class BaseContributorTestCase(TestCase): class PrefillUsingIdentifierTest(BaseContributorTestCase): - def test_retrieving_existing_arxiv_paper(self): + def setUp(self): + super().setUp() + self.client = Client() + self.url = reverse('submissions:prefill_using_identifier') + self.assertTrue(self.client.login(username="Test", password="testpw")) + + def test_basic_responses(self): + # Test anonymous client is rejected client = Client() - client.login(username="Test", password="testpw") + response = client.get(self.url) + self.assertEqual(response.status_code, 403) + response = client.post(self.url, {'identifier': '1512.00030v1'}) + self.assertEqual(response.status_code, 403) - response = client.post(reverse('submissions:prefill_using_identifier'), - {'identifier': '1512.00030v1'}) + # Registered Contributor should get 200 + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + def test_retrieving_existing_arxiv_paper(self): + '''Test view with a valid post request.''' + response = self.client.post(self.url, {'identifier': '1512.00030v1'}) self.assertEqual(response.status_code, 200) + self.assertIsInstance(response.context['form'], SubmissionForm) + self.assertIsInstance(response.context['identifierform'], SubmissionIdentifierForm) + self.assertTrue(response.context['identifierform'].is_valid()) def test_still_200_ok_if_identifier_is_wrong(self): - client = Client() - client.login(username="Test", password="testpw") - - response = client.post(reverse('submissions:prefill_using_identifier'), - {'identifier': '1512.00030'}) - + response = self.client.post(self.url, {'identifier': '1512.00030'}) self.assertEqual(response.status_code, 200) class SubmitManuscriptTest(BaseContributorTestCase): def test_submit_correct_manuscript(self): client = Client() - client.login(username="Test", password="testpw") + # Unauthorized request shouldn't be possible response = client.post(reverse('submissions:prefill_using_identifier'), {'identifier': '1512.00030v1'}) + self.assertEquals(response.status_code, 403) - params = response.context['form'].initial + # Registered Contributor should get 200 + self.assertTrue(client.login(username="Test", password="testpw")) + response = client.post(reverse('submissions:prefill_using_identifier'), + {'identifier': '1512.00030v1'}) + self.assertEqual(response.status_code, 200) - extras = { + # Fill form parameters + params = response.context['form'].initial + params.update({ 'discipline': 'physics', 'submitted_to_journal': 'SciPost Physics', 'submission_type': 'Article', 'domain': 'T' - } - response = client.post(reverse('submissions:submit_manuscript'), {**params, **extras}) + }) + response = client.post(reverse('submissions:submit_manuscript'), **params) self.assertEqual(response.status_code, 200) + # submission = Submission.objects.filter(status=STATUS_UNASSIGNED).last() + # raise Exception(response.content) + # self.assertIn(submission, response.context) class SubmissionDetailTest(BaseContributorTestCase):