Coverage for tests/test_renderer.py: 100.00%
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""Tests for the handlers.python module."""
3from copy import deepcopy
5from mkdocstrings_handlers.python.rendering import ( # noqa: WPS450
6 rebuild_category_lists,
7 sort_key_alphabetical,
8 sort_key_source,
9 sort_object,
10)
13def test_members_order():
14 """Assert that members sorting functions work correctly."""
15 subcategories = {key: [] for key in ("attributes", "classes", "functions", "methods", "modules")}
16 categories = {"children": {}, **subcategories}
17 collected = {
18 "name": "root",
19 "children": {
20 "b": {"name": "b", "source": {"line_start": 0}, **categories},
21 "a": {"name": "a", **categories},
22 "z": {"name": "z", "source": {"line_start": 100}, **categories},
23 "no_name": {"source": {"line_start": 10}, **categories},
24 "c": {
25 "name": "c",
26 "source": {"line_start": 30},
27 "children": {
28 "z": {"name": "z", "source": {"line_start": 200}, **categories},
29 "a": {"name": "a", "source": {"line_start": 20}, **categories},
30 },
31 **subcategories,
32 },
33 },
34 "attributes": ["b", "c", "no_name", "z", "a"],
35 "classes": [],
36 "functions": [],
37 "methods": [],
38 "modules": [],
39 }
40 rebuild_category_lists(collected)
41 alphebetical = deepcopy(collected)
42 sort_object(alphebetical, sort_key_alphabetical)
44 rebuilt_categories = {"children": [], **subcategories}
45 assert (
46 alphebetical["children"]
47 == alphebetical["attributes"]
48 == [
49 {"name": "a", **rebuilt_categories},
50 {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
51 {
52 "name": "c",
53 "source": {"line_start": 30},
54 "children": [
55 {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
56 {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
57 ],
58 **subcategories,
59 },
60 {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
61 {"source": {"line_start": 10}, **rebuilt_categories},
62 ]
63 )
65 source = deepcopy(collected)
66 sort_object(source, sort_key_source)
68 assert (
69 source["children"]
70 == source["attributes"]
71 == [
72 {"name": "a", **rebuilt_categories},
73 {"name": "b", "source": {"line_start": 0}, **rebuilt_categories},
74 {"source": {"line_start": 10}, **rebuilt_categories},
75 {
76 "name": "c",
77 "source": {"line_start": 30},
78 "children": [
79 {"name": "a", "source": {"line_start": 20}, **rebuilt_categories},
80 {"name": "z", "source": {"line_start": 200}, **rebuilt_categories},
81 ],
82 **subcategories,
83 },
84 {"name": "z", "source": {"line_start": 100}, **rebuilt_categories},
85 ]
86 )