File: test_renderer.py

package info (click to toggle)
mkdocstrings-python-legacy 0.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 536 kB
  • sloc: python: 907; makefile: 29; sh: 17; javascript: 13
file content (88 lines) | stat: -rw-r--r-- 3,131 bytes parent folder | download
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
88
"""Tests for the handlers.python module."""

from __future__ import annotations

from copy import deepcopy

from mkdocstrings_handlers.python.rendering import (
    rebuild_category_lists,
    sort_key_alphabetical,
    sort_key_source,
    sort_object,
)


def test_members_order() -> None:
    """Assert that members sorting functions work correctly."""
    subcategories: dict[str, list] = {key: [] for key in ("attributes", "classes", "functions", "methods", "modules")}
    categories = {"children": {}, **subcategories}
    collected = {
        "name": "root",
        "children": {
            "b": {"name": "b", "source": {"line_start": 0}, **categories},
            "a": {"name": "a", **categories},
            "z": {"name": "z", "source": {"line_start": 100}, **categories},
            "no_name": {"source": {"line_start": 10}, **categories},
            "c": {
                "name": "c",
                "source": {"line_start": 30},
                "children": {
                    "z": {"name": "z", "source": {"line_start": 200}, **categories},
                    "a": {"name": "a", "source": {"line_start": 20}, **categories},
                },
                **subcategories,
            },
        },
        "attributes": ["b", "c", "no_name", "z", "a"],
        "classes": [],
        "functions": [],
        "methods": [],
        "modules": [],
    }
    rebuild_category_lists(collected)
    alphebetical = deepcopy(collected)
    sort_object(alphebetical, sort_key_alphabetical)

    rebuilt_categories = {"children": [], **subcategories}
    assert (
        alphebetical["children"]
        == alphebetical["attributes"]
        == [
            {"name": "a", **rebuilt_categories},
            {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
            {
                "name": "c",
                "source": {"line_start": 30},
                "children": [
                    {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
                    {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
                ],
                **subcategories,
            },
            {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
            {"source": {"line_start": 10}, **rebuilt_categories},
        ]
    )

    source = deepcopy(collected)
    sort_object(source, sort_key_source)

    assert (
        source["children"]
        == source["attributes"]
        == [
            {"name": "a", **rebuilt_categories},
            {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
            {"source": {"line_start": 10}, **rebuilt_categories},
            {
                "name": "c",
                "source": {"line_start": 30},
                "children": [
                    {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
                    {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
                ],
                **subcategories,
            },
            {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
        ]
    )