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

14 statements  

1"""Tests for the handlers.python module.""" 

2 

3from copy import deepcopy 

4 

5from mkdocstrings_handlers.python.rendering import ( # noqa: WPS450 

6 rebuild_category_lists, 

7 sort_key_alphabetical, 

8 sort_key_source, 

9 sort_object, 

10) 

11 

12 

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) 

43 

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 ) 

64 

65 source = deepcopy(collected) 

66 sort_object(source, sort_key_source) 

67 

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 )