File size: 2,525 Bytes
630a0f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
from scripts.vault.model import Consumer, FileEntry, PackageInfo, Provider, WiringReport
from scripts.vault.render import (
    BANNIERE,
    render_index,
    render_package,
    render_wiring,
    slug,
)


def _paquet():
    return PackageInfo(
        key="backend/adapters/inference",
        kind="backend",
        files=[
            FileEntry(path="backend/adapters/inference/z.py", loc=10),
            FileEntry(path="backend/adapters/inference/a.py", loc=5),
        ],
        imports_out={"backend/core/ports", "backend/core/domain"},
        imports_in={"backend/api/animetix"},
    )


def test_slug_remplace_les_separateurs():
    assert slug("backend/adapters/inference") == "backend-adapters-inference"


def test_la_banniere_ouvre_chaque_note_generee():
    assert render_package(_paquet()).startswith(BANNIERE)


def test_les_fichiers_sont_tries_par_chemin():
    rendu = render_package(_paquet())
    assert rendu.index("a.py") < rendu.index("z.py")


def test_les_dependances_sont_triees_et_en_wikiliens():
    rendu = render_package(_paquet())
    assert "[[backend-core-domain]]" in rendu
    assert rendu.index("backend-core-domain") < rendu.index("backend-core-ports")


def test_une_section_vide_dit_rien():
    vide = PackageInfo(key="backend/core/utils", kind="backend")
    assert "- (rien)" in render_package(vide)


def test_le_total_de_lignes_est_affiche():
    assert "15 lignes" in render_package(_paquet())


def test_le_rendu_est_stable():
    assert render_package(_paquet()) == render_package(_paquet())


def test_le_cablage_liste_providers_et_consommateurs():
    rapport = WiringReport(
        providers=[
            Provider(
                chemin="core.game_service", nature="Singleton", cible="GameService"
            )
        ],
        consumers=[
            Consumer(
                fichier="backend/api/animetix/api/explore.py",
                provider="core.feed_composer",
            )
        ],
    )
    rendu = render_wiring(rapport)
    assert "core.game_service" in rendu
    assert "GameService" in rendu
    assert "core.feed_composer" in rendu
    assert rendu.startswith(BANNIERE)


def test_l_index_liste_les_paquets_tries_par_couche():
    rendu = render_index(
        [
            PackageInfo(key="frontend/src/features/manga-reader", kind="frontend"),
            PackageInfo(key="backend/core/domain", kind="backend"),
        ]
    )
    assert rendu.index("backend-core-domain") < rendu.index(
        "frontend-src-features-manga-reader"
    )