Coverage for tests/test_renderer.py: 100.00%
15 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-09 18:38 +0100
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-09 18:38 +0100
1"""Tests for the handlers.python module."""
3from __future__ import annotations
5from copy import deepcopy
7from mkdocstrings_handlers.python.rendering import (
8 rebuild_category_lists,
9 sort_key_alphabetical,
10 sort_key_source,
11 sort_object,
12)
15def test_members_order() -> None:
16 """Assert that members sorting functions work correctly."""
17 subcategories: dict[str, list] = {key: [] for key in ("attributes", "classes", "functions", "methods", "modules")}
18 categories = {"children": {}, **subcategories}
19 collected = {
20 "name": "root",
21 "children": {
22 "b": {"name": "b", "source": {"line_start": 0}, **categories},
23 "a": {"name": "a", **categories},
24 "z": {"name": "z", "source": {"line_start": 100}, **categories},
25 "no_name": {"source": {"line_start": 10}, **categories},
26 "c": {
27 "name": "c",
28 "source": {"line_start": 30},
29 "children": {
30 "z": {"name": "z", "source": {"line_start": 200}, **categories},
31 "a": {"name": "a", "source": {"line_start": 20}, **categories},
32 },
33 **subcategories,
34 },
35 },
36 "attributes": ["b", "c", "no_name", "z", "a"],
37 "classes": [],
38 "functions": [],
39 "methods": [],
40 "modules": [],
41 }
42 rebuild_category_lists(collected)
43 alphebetical = deepcopy(collected)
44 sort_object(alphebetical, sort_key_alphabetical)
46 rebuilt_categories = {"children": [], **subcategories}
47 assert (
48 alphebetical["children"]
49 == alphebetical["attributes"]
50 == [
51 {"name": "a", **rebuilt_categories},
52 {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
53 {
54 "name": "c",
55 "source": {"line_start": 30},
56 "children": [
57 {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
58 {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
59 ],
60 **subcategories,
61 },
62 {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
63 {"source": {"line_start": 10}, **rebuilt_categories},
64 ]
65 )
67 source = deepcopy(collected)
68 sort_object(source, sort_key_source)
70 assert (
71 source["children"]
72 == source["attributes"]
73 == [
74 {"name": "a", **rebuilt_categories},
75 {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
76 {"source": {"line_start": 10}, **rebuilt_categories},
77 {
78 "name": "c",
79 "source": {"line_start": 30},
80 "children": [
81 {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
82 {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
83 ],
84 **subcategories,
85 },
86 {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
87 ]
88 )