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

1import json 

2import logging 

3 

4from django.urls import reverse 

5 

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 

14 

15logger = logging.getLogger(__name__) 

16 

17 

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 

35 

36 

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 ) 

56 

57 

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 ) 

73 

74 

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 ) 

92 

93 

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) 

99 

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 

103 

104 

105### Revision requests ### 

106 

107 

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 ) 

122 

123 

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 ) 

134 

135 

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 ) 

140 

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 ) 

146 

147 confirm_revision(client, submission_pk, pdf_file) 

148 

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"])