Coverage for src / mesh / tests / roles / test_journal_manager.py: 100%

58 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-08-11 09:47 +0000

1from mesh.models.orm.editorial_models import EditorSubmissionRight 

2from mesh.models.orm.factories import ( 

3 ReviewFactory, 

4 SubmissionFactory, 

5 SubmissionVersionFactory, 

6 UserFactory, 

7) 

8from mesh.models.orm.submission_models import Submission, SubmissionState 

9from mesh.models.orm.user_models import User 

10from mesh.models.roles.journal_manager import JournalManager 

11from mesh.tests.base_test_case import BaseTestCase 

12 

13 

14class JournalManagerTestCase(BaseTestCase): 

15 used_models = [Submission] 

16 class_used_models = [User] 

17 

18 @classmethod 

19 def setUpClass(cls) -> None: 

20 super().setUpClass() 

21 cls.user_journal_manager = UserFactory.create(journal_manager=True) 

22 

23 # def test_role_active(self): 

24 # random_user = UserFactory.create() 

25 # role = JournalManager(random_user) 

26 # self.assertFalse(role.active) 

27 

28 # role = JournalManager(self.user_journal_manager) 

29 # self.assertTrue(role.active) 

30 

31 def test_submissions(self): 

32 """ 

33 All submissions are available to the journal manager except the OPENED (draft) ones. 

34 """ 

35 submission_1 = SubmissionFactory.create() 

36 submission_2 = SubmissionFactory.create(state=SubmissionState.SUBMITTED.value) 

37 submission_3 = SubmissionFactory.create(state=SubmissionState.ON_REVIEW.value) 

38 submission_4 = SubmissionFactory.create(state=SubmissionState.REVISION_REQUESTED.value) 

39 submission_5 = SubmissionFactory.create(state=SubmissionState.REVISION_SUBMITTED.value) 

40 submission_6 = SubmissionFactory.create(state=SubmissionState.ACCEPTED.value) 

41 submission_7 = SubmissionFactory.create(state=SubmissionState.REJECTED.value) 

42 

43 role = JournalManager(self.user_journal_manager) 

44 

45 submissions = role.get_submissions() 

46 self.assertEqual(len(submissions), 6) 

47 self.assertNotIn(submission_1, submissions) 

48 self.assertIn(submission_2, submissions) 

49 self.assertIn(submission_3, submissions) 

50 self.assertIn(submission_4, submissions) 

51 self.assertIn(submission_5, submissions) 

52 self.assertIn(submission_6, submissions) 

53 self.assertIn(submission_7, submissions) 

54 

55 def test_managed_users(self): 

56 user_author_1 = UserFactory.create() 

57 user_author_2 = UserFactory.create() 

58 user_reviewer = UserFactory.create() 

59 user_editor_1 = UserFactory.create() 

60 user_editor_2 = UserFactory.create() 

61 user_admin = UserFactory.create(is_superuser=True) # noqa 

62 user_journal_manager = UserFactory.create(journal_manager=True) 

63 user_other_journal_manager = UserFactory.create(journal_manager=True) # noqa 

64 

65 submission_1 = SubmissionFactory.create(created_by=user_author_1) 

66 submission_2 = SubmissionFactory.create(created_by=user_author_2) # noqa 

67 version = SubmissionVersionFactory.create(submission=submission_1) 

68 ReviewFactory.create(reviewer=user_reviewer, version=version) 

69 EditorSubmissionRight.objects.create(user=user_editor_1, submission=submission_1) 

70 EditorSubmissionRight.objects.create(user=user_editor_2, submission=submission_1) 

71 

72 role = JournalManager(user_journal_manager) 

73 managed_users = role.get_managed_users() 

74 users = managed_users 

75 self.assertEqual(len(users), 5) 

76 self.assertIn(user_author_1, managed_users) 

77 self.assertIn(user_author_2, managed_users) 

78 self.assertIn(user_reviewer, managed_users) 

79 self.assertIn(user_editor_1, managed_users) 

80 self.assertIn(user_editor_2, managed_users) 

81 

82 def test_can_edit_journal_sections(self): 

83 role = JournalManager(self.user_journal_manager) 

84 self.assertTrue(role.can_edit_journal_sections())