Coverage for src / mesh / tests / workflow / helpers / author_request_helpers.py: 100%
48 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-05-04 12:41 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-05-04 12:41 +0000
1import json
2import logging
4from django.urls import reverse
6from mesh.models.orm.submission_models import SubmissionState
7from mesh.tests.workflow.helpers.base_helpers import (
8 assert_submission_state,
9 assert_version_main_file,
10 check_submission_detail_page,
11 get_version_pk,
12)
13from mesh.views.forms.base_forms import FormAction
15logger = logging.getLogger(__name__)
18def create_submission_first_step(
19 client,
20 expected_status_code=302,
21 preprint_id=16,
22 journal_section=2,
23 expected_state=SubmissionState.OPENED,
24):
25 response = client.post(
26 reverse("mesh:submission_create"),
27 args={"journal_section": journal_section, "preprint_id": preprint_id},
28 )
29 assert response.status_code == expected_status_code, (
30 f"Error on create submission first response status code, expected {expected_status_code}, got {response.status_code}"
31 )
32 submission_pk = int(response.url.split("/")[2])
33 assert_submission_state(submission_pk=submission_pk, expected_state=expected_state)
34 return submission_pk
37def create_submission_second_step(
38 client,
39 submission_pk,
40 pdf_file,
41 data,
42 expected_status_code=200,
43 expected_state=SubmissionState.OPENED,
44):
45 response = client.post(
46 reverse("mesh:submission_update_vuejs", kwargs={"submission_pk": submission_pk}),
47 data={
48 "pdf": pdf_file,
49 "data": json.dumps(data),
50 },
51 )
52 assert_submission_state(submission_pk=submission_pk, expected_state=expected_state)
53 assert response.status_code == expected_status_code, (
54 f"Error on create submission second response status code, expected {expected_status_code}, got {response.status_code}"
55 )
58def create_submission_third_step(
59 client,
60 submission_pk,
61 author_agreement="on",
62 expected_status_code=302,
63 expected_state=SubmissionState.OPENED,
64):
65 response = client.post(
66 reverse("mesh:submission_info_update", kwargs={"submission_pk": submission_pk}),
67 data={"author_agreement": author_agreement},
68 )
69 assert_submission_state(submission_pk=submission_pk, expected_state=expected_state)
70 assert response.status_code == expected_status_code, (
71 f"Error on create submission third response status code, expected {expected_status_code}, got {response.status_code}"
72 )
75def create_submission_fourth_step(
76 client,
77 submission_pk,
78 confirm="on",
79 expected_status_code=302,
80 expected_state=SubmissionState.ON_REVIEW,
81):
82 response = client.post(
83 reverse("mesh:submission_confirm", kwargs={"submission_pk": submission_pk}),
84 data={
85 "confirm": confirm,
86 },
87 )
88 assert_submission_state(submission_pk=submission_pk, expected_state=expected_state)
89 assert response.status_code == expected_status_code, (
90 f"Error on create submission fourth response status code, expected {expected_status_code}, got {response.status_code}"
91 )
94def create_submission_workflow(client, pdf_file, data, expected_state=SubmissionState.ON_REVIEW):
95 submission_pk = create_submission_first_step(client)
96 create_submission_second_step(client, submission_pk, pdf_file=pdf_file, data=data)
97 create_submission_third_step(client, submission_pk)
98 create_submission_fourth_step(client, submission_pk)
100 assert_submission_state(submission_pk=submission_pk, expected_state=expected_state)
101 assert_version_main_file(submission_pk=submission_pk, expected_name=data["pdf"]["pdf_name"])
102 return submission_pk
105### Revision requests ###
108def make_revision(client, submission_pk, pdf_file, expected_status_code=302):
109 version_pk = get_version_pk(submission_pk)
110 response = client.post(
111 reverse("mesh:submission_version_create", kwargs={"submission_pk": version_pk}),
112 data={
113 "main_file": pdf_file,
114 "additional_files": "",
115 FormAction.SUBMIT.value: "1",
116 },
117 format="multipart",
118 )
119 assert response.status_code == expected_status_code, (
120 f"Error on make revision response status code, expected {expected_status_code}, got {response.status_code}"
121 )
124def confirm_revision(client, submission_pk, pdf_file, confirm="on", expected_status_code=302):
125 response = client.post(
126 reverse("mesh:submission_confirm", kwargs={"submission_pk": submission_pk}),
127 data={
128 "confirm": confirm,
129 },
130 )
131 assert response.status_code == expected_status_code, (
132 f"Error on confirm revision response status code, expected {expected_status_code}, got {response.status_code}"
133 )
136def make_revision_workflow(client, submission_pk, pdf_file, data):
137 assert_submission_state(
138 submission_pk=submission_pk, expected_state=SubmissionState.REVISION_REQUESTED
139 )
141 check_submission_detail_page(client, submission_pk)
142 make_revision(client, submission_pk, pdf_file)
143 assert_submission_state(
144 submission_pk=submission_pk, expected_state=SubmissionState.REVISION_REQUESTED
145 )
147 confirm_revision(client, submission_pk, pdf_file)
149 assert_submission_state(submission_pk=submission_pk, expected_state=SubmissionState.ON_REVIEW)
150 assert_version_main_file(submission_pk=submission_pk, expected_name=data["pdf"]["pdf_name"])