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

62 statements  

« prev     ^ index     » next       coverage.py v7.9.0, created at 2026-02-04 09:42 +0000

1from mesh.model.roles.journal_manager import JournalManager, JournalManagerRights 

2 

3from ...models.editorial_models import EditorSubmissionRight 

4from ...models.factories import ( 

5 ReviewFactory, 

6 SubmissionFactory, 

7 SubmissionVersionFactory, 

8 UserFactory, 

9) 

10from ...models.submission_models import Submission, SubmissionState 

11from ...models.user_models import User 

12from ..base_test_case import BaseTestCase 

13 

14 

15class JournalManagerTestCase(BaseTestCase): 

16 used_models = [Submission] 

17 class_used_models = [User] 

18 

19 @classmethod 

20 def setUpClass(cls) -> None: 

21 super().setUpClass() 

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

23 

24 def test_role_active(self): 

25 random_user = UserFactory.create() 

26 role = JournalManager(random_user) 

27 self.assertFalse(role.active) 

28 

29 role = JournalManager(self.user_journal_manager) 

30 self.assertTrue(role.active) 

31 

32 def test_submissions(self): 

33 """ 

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

35 """ 

36 submission_1 = SubmissionFactory.create() 

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

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

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

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

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

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

43 

44 rights = JournalManagerRights(self.user_journal_manager) 

45 self.assertEqual(len(rights.submissions), 7) 

46 self.assertIn(submission_1, rights.submissions) 

47 self.assertIn(submission_2, rights.submissions) 

48 self.assertIn(submission_3, rights.submissions) 

49 self.assertIn(submission_4, rights.submissions) 

50 self.assertIn(submission_5, rights.submissions) 

51 self.assertIn(submission_6, rights.submissions) 

52 self.assertIn(submission_7, rights.submissions) 

53 

54 def test_managed_users(self): 

55 user_author_1 = UserFactory.create() 

56 user_author_2 = UserFactory.create() 

57 user_reviewer = UserFactory.create() 

58 user_editor_1 = UserFactory.create() 

59 user_editor_2 = UserFactory.create() 

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

61 user_journal_manager = UserFactory.create(journal_manager=True) 

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

63 

64 submission_1 = SubmissionFactory.create(created_by=user_author_1) 

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

66 version = SubmissionVersionFactory.create(submission=submission_1) 

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

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

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

70 

71 rights = JournalManagerRights(user_journal_manager) 

72 users = rights.managed_users 

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

74 self.assertIn(user_author_1, rights.managed_users) 

75 self.assertIn(user_author_2, rights.managed_users) 

76 self.assertIn(user_reviewer, rights.managed_users) 

77 self.assertIn(user_editor_1, rights.managed_users) 

78 self.assertIn(user_editor_2, rights.managed_users) 

79 

80 def test_can_edit_journal_sections(self): 

81 rights = JournalManagerRights(self.user_journal_manager) 

82 self.assertTrue(rights.can_edit_journal_sections())