File size: 2,379 Bytes
b4f2238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""Unit tests for case_contract_export_bridge."""

from __future__ import annotations

from unittest.mock import MagicMock, patch

from apps.cases.services.case.case_contract_export_bridge import (
    collect_contract_file_paths_for_case_export,
    get_case_admin_contract_export_prefetches,
    get_case_admin_contract_file_prefetches,
    serialize_contract_for_case_export,
)


def test_get_case_admin_contract_export_prefetches_returns_nonempty_tuple() -> None:
    result = get_case_admin_contract_export_prefetches()
    assert isinstance(result, tuple)
    assert len(result) > 0


def test_get_case_admin_contract_file_prefetches_returns_nonempty_tuple() -> None:
    result = get_case_admin_contract_file_prefetches()
    assert isinstance(result, tuple)
    assert len(result) > 0


def test_collect_contract_file_paths_for_case_export_collects_all_paths() -> None:
    material = MagicMock()
    material.file_path = "material.pdf"

    identity_doc = MagicMock()
    identity_doc.file_path = "id.pdf"

    clue_attachment = MagicMock()
    clue_attachment.file_path = "clue.pdf"

    clue = MagicMock()
    clue.attachments.all.return_value = [clue_attachment]

    client = MagicMock()
    client.identity_docs.all.return_value = [identity_doc]
    client.property_clues.all.return_value = [clue]

    party = MagicMock()
    party.client = client

    contract = MagicMock()
    contract.finalized_materials.all.return_value = [material]
    contract.contract_parties.all.return_value = [party]

    collected: list[str] = []
    collect_contract_file_paths_for_case_export(contract, collected.append)

    assert "material.pdf" in collected
    assert "id.pdf" in collected
    assert "clue.pdf" in collected


def test_serialize_contract_for_case_export_calls_serializer() -> None:
    contract = MagicMock()
    expected = {"id": 1, "name": "test"}

    with (
        patch(
            "apps.cases.services.case.case_export_serializer_service.serialize_case_obj"
        ) as mock_case_ser,
        patch(
            "apps.contracts.services.contract.integrations.serialize_contract_obj"
        ) as mock_contract_ser,
    ):
        mock_contract_ser.return_value = expected
        result = serialize_contract_for_case_export(contract)

    mock_contract_ser.assert_called_once_with(contract, case_serializer=mock_case_ser)
    assert result == expected