Skip to content

Commit 65d0d81

Browse files
SilviaAmAmsvenvandescheur
authored andcommitted
✅ [#227] Test reassigning assignees
1 parent b5b4105 commit 65d0d81

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

backend/src/openarchiefbeheer/destruction/tests/test_assignement_logic.py

+56
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django.test import TestCase
44

5+
from openarchiefbeheer.accounts.tests.factories import UserFactory
56
from openarchiefbeheer.config.models import ArchiveConfig
67
from openarchiefbeheer.zaken.tests.factories import ZaakFactory
78

@@ -214,3 +215,58 @@ def test_archivist_accepts(self):
214215

215216
self.assertEqual(destruction_list.status, ListStatus.ready_to_delete)
216217
self.assertEqual(destruction_list.assignee, record_manager.user)
218+
219+
def test_reassign_reviewers_ready_to_review(self):
220+
reviewer_old = UserFactory.create(role__can_review_destruction=True)
221+
destruction_list = DestructionListFactory.create(
222+
status=ListStatus.ready_to_review, assignee=reviewer_old
223+
)
224+
assignees = DestructionListAssigneeFactory.create_batch(
225+
2, role=ListRole.reviewer, destruction_list=destruction_list
226+
)
227+
228+
destruction_list.reassign()
229+
230+
destruction_list.refresh_from_db()
231+
232+
self.assertEqual(destruction_list.status, ListStatus.ready_to_review)
233+
self.assertEqual(destruction_list.assignee, assignees[0].user)
234+
235+
def test_reassign_reviewers_noop(self):
236+
record_manager = UserFactory.create(role__can_start_destruction=True)
237+
destruction_list = DestructionListFactory.create(
238+
status=ListStatus.new, assignee=record_manager, author=record_manager
239+
)
240+
DestructionListAssigneeFactory.create_batch(
241+
2, role=ListRole.reviewer, destruction_list=destruction_list
242+
)
243+
244+
with self.subTest("New"):
245+
destruction_list.reassign()
246+
247+
destruction_list.refresh_from_db()
248+
249+
self.assertEqual(destruction_list.status, ListStatus.new)
250+
self.assertEqual(destruction_list.assignee, record_manager)
251+
252+
with self.subTest("Changes requested"):
253+
destruction_list.status = ListStatus.changes_requested
254+
destruction_list.save()
255+
256+
destruction_list.reassign()
257+
258+
destruction_list.refresh_from_db()
259+
260+
self.assertEqual(destruction_list.status, ListStatus.changes_requested)
261+
self.assertEqual(destruction_list.assignee, record_manager)
262+
263+
with self.subTest("Internally reviewed"):
264+
destruction_list.status = ListStatus.internally_reviewed
265+
destruction_list.save()
266+
267+
destruction_list.reassign()
268+
269+
destruction_list.refresh_from_db()
270+
271+
self.assertEqual(destruction_list.status, ListStatus.internally_reviewed)
272+
self.assertEqual(destruction_list.assignee, record_manager)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from django.test import TestCase
2+
3+
from openarchiefbeheer.accounts.tests.factories import UserFactory
4+
5+
from ..constants import ListRole
6+
from ..utils import process_new_assignees
7+
from .factories import DestructionListAssigneeFactory, DestructionListFactory
8+
9+
10+
class ProcessNewReviewersTest(TestCase):
11+
def test_all_new_assignees_different(self):
12+
destruction_list = DestructionListFactory.create()
13+
DestructionListAssigneeFactory.create_batch(
14+
3, role=ListRole.reviewer, destruction_list=destruction_list
15+
)
16+
17+
users = UserFactory.create_batch(2, role__can_review_destruction=True)
18+
new_assignee1 = {"user": users[0]}
19+
new_assignee2 = {"user": users[1]}
20+
21+
process_new_assignees(
22+
destruction_list, [new_assignee1, new_assignee2], ListRole.reviewer
23+
)
24+
25+
new_assignees = destruction_list.assignees.filter(
26+
role=ListRole.reviewer
27+
).order_by("user__pk")
28+
29+
self.assertEqual(2, new_assignees.count())
30+
self.assertEqual(users[0].pk, new_assignees[0].user.pk)
31+
self.assertEqual(users[1].pk, new_assignees[1].user.pk)
32+
33+
def test_not_all_new_assignees_are_new(self):
34+
destruction_list = DestructionListFactory.create()
35+
old_assignees = DestructionListAssigneeFactory.create_batch(
36+
2, role=ListRole.reviewer, destruction_list=destruction_list
37+
)
38+
39+
users = UserFactory.create_batch(2, role__can_review_destruction=True)
40+
new_assignee1 = {"user": users[0]}
41+
new_assignee2 = {"user": users[1]}
42+
new_assignee3 = {"user": old_assignees[0].user}
43+
44+
process_new_assignees(
45+
destruction_list,
46+
[new_assignee1, new_assignee2, new_assignee3],
47+
ListRole.reviewer,
48+
)
49+
50+
new_assignees = destruction_list.assignees.filter(
51+
role=ListRole.reviewer
52+
).order_by("user__pk")
53+
54+
self.assertEqual(3, new_assignees.count())
55+
self.assertEqual(old_assignees[0].user.pk, new_assignees[0].user.pk)
56+
self.assertEqual(users[0].pk, new_assignees[1].user.pk)
57+
self.assertEqual(users[1].pk, new_assignees[2].user.pk)

0 commit comments

Comments
 (0)