Skip to content

Commit fb3e7b8

Browse files
committed
✅ [#502] Test sheet with review process
1 parent f728509 commit fb3e7b8

File tree

1 file changed

+85
-1
lines changed

1 file changed

+85
-1
lines changed

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

+85-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import date, datetime
22
from unittest.mock import patch
33

4+
from django.contrib.auth.models import Group
45
from django.core.exceptions import ObjectDoesNotExist
56
from django.test import TestCase
67
from django.utils import timezone
@@ -15,16 +16,23 @@
1516
from zgw_consumers.test.factories import ServiceFactory
1617

1718
from openarchiefbeheer.config.models import ArchiveConfig
19+
from openarchiefbeheer.logging import logevent
1820
from openarchiefbeheer.utils.results_store import ResultStore
1921
from openarchiefbeheer.zaken.models import Zaak
2022
from openarchiefbeheer.zaken.tests.factories import ZaakFactory
2123

2224
from ...accounts.tests.factories import UserFactory
23-
from ..constants import InternalStatus, ListItemStatus, ListStatus
25+
from ..constants import (
26+
InternalStatus,
27+
ListItemStatus,
28+
ListStatus,
29+
ReviewDecisionChoices,
30+
)
2431
from .factories import (
2532
DestructionListCoReviewFactory,
2633
DestructionListFactory,
2734
DestructionListItemFactory,
35+
DestructionListReviewFactory,
2836
ReviewResponseFactory,
2937
)
3038

@@ -408,6 +416,82 @@ def test_generate_destruction_report(self):
408416
),
409417
)
410418

419+
def test_generate_destruction_report_review_process(self):
420+
author = UserFactory.create(post__can_start_destruction=True)
421+
reviewer = UserFactory.create(
422+
first_name="John",
423+
last_name="Doe",
424+
username="jdoe1",
425+
post__can_review_destruction=True,
426+
)
427+
reviewer_group, created = Group.objects.get_or_create(name="Reviewer")
428+
reviewer.groups.add(reviewer_group)
429+
archivist = UserFactory.create(
430+
first_name="Alice",
431+
last_name="Wonderland",
432+
username="awonderland1",
433+
post__can_review_final_list=True,
434+
)
435+
archivist_group, created = Group.objects.get_or_create(name="Archivist")
436+
archivist.groups.add(archivist_group)
437+
438+
destruction_list = DestructionListFactory.create(
439+
status=ListStatus.deleted, author=author
440+
)
441+
442+
review_reviewer_rejected = DestructionListReviewFactory.create(
443+
author=reviewer, decision=ReviewDecisionChoices.rejected
444+
)
445+
review_reviewer_accepted = DestructionListReviewFactory.create(
446+
author=reviewer, decision=ReviewDecisionChoices.accepted
447+
)
448+
review_archivist_accepted = DestructionListReviewFactory.create(
449+
author=archivist, decision=ReviewDecisionChoices.accepted
450+
)
451+
452+
logevent.destruction_list_created(
453+
destruction_list, author, reviewer
454+
) # A log with a different template (should NOT be present in the report)
455+
456+
logevent.destruction_list_reviewed(
457+
destruction_list, review_reviewer_rejected, reviewer
458+
) # A rejection (should NOT be present in the report)
459+
with freeze_time("2024-05-02T16:00:00+02:00"):
460+
logevent.destruction_list_reviewed(
461+
destruction_list, review_reviewer_accepted, reviewer
462+
)
463+
with freeze_time("2024-05-08T09:45:00+02:00"):
464+
logevent.destruction_list_reviewed(
465+
destruction_list, review_archivist_accepted, archivist
466+
)
467+
468+
destruction_list.generate_destruction_report()
469+
470+
wb = load_workbook(filename=destruction_list.destruction_report.path)
471+
sheet_deleted_zaken = wb[gettext("Review process")]
472+
rows = list(sheet_deleted_zaken.iter_rows(values_only=True))
473+
474+
self.assertEqual(len(rows), 3)
475+
476+
self.assertEqual(
477+
rows[1],
478+
(
479+
"Reviewer",
480+
"John Doe (jdoe1)",
481+
"2024-05-02 16:00+02:00",
482+
gettext("Has approved"),
483+
),
484+
)
485+
self.assertEqual(
486+
rows[2],
487+
(
488+
"Archivist",
489+
"Alice Wonderland (awonderland1)",
490+
"2024-05-08 09:45+02:00",
491+
gettext("Has approved"),
492+
),
493+
)
494+
411495
def test_zaak_creation_skipped_if_internal_status_succeeded(self):
412496
destruction_list = DestructionListFactory.create(
413497
processing_status=InternalStatus.succeeded

0 commit comments

Comments
 (0)