15
15
16
16
17
17
@pytest .mark .parametrize ("directory_urls" , ["use_directory_urls" , "no_directory_urls" ])
18
- @pytest .mark .parametrize ("nav" , ["explicit_nav" , "derived_nav" ])
19
- def test_real_example (tmpdir , directory_urls , nav ):
18
+ @pytest .mark .parametrize ("nav_src" , ["explicit_nav" , "derived_nav" ])
19
+ @pytest .mark .parametrize ("index_file" , ["default_index_file" , "index.md" , "foo.md" ])
20
+ def test_real_example (tmpdir , directory_urls , nav_src , index_file ):
20
21
config = dict (
21
22
docs_dir = str (example_dir / "docs" ),
22
23
site_dir = tmpdir ,
23
24
use_directory_urls = (directory_urls == "use_directory_urls" ),
24
- nav = load_config (str (example_dir / "mkdocs.yml" ))["nav" ] if nav == "explicit_nav" else None ,
25
+ nav = load_config (str (example_dir / "mkdocs.yml" ))["nav" ]
26
+ if nav_src == "explicit_nav"
27
+ else None ,
25
28
)
29
+ if nav_src == "derived_nav" and index_file != "default_index_file" :
30
+ # only test index_file for derived nav
31
+ # if index_file is None we test the default value (which is first child)
32
+ config ["index_file" ] = index_file
33
+ else :
34
+ index_file = None
26
35
files = get_files (config )
27
36
nav = get_navigation (files , config )
28
- nav = plugin .SectionIndexPlugin ().on_nav (nav , config , files )
37
+ instance = plugin .SectionIndexPlugin ()
38
+ instance .load_config (config )
39
+ if index_file is None :
40
+ assert instance .config ["index_file" ] is None
41
+ nav = instance .on_nav (nav , instance .config , files )
29
42
30
- assert len (nav .pages ) == 5
31
- assert len (nav .items ) == 3
43
+ assert len (nav .pages ) == (7 if nav_src == "derived_nav" else 5 )
44
+ assert len (nav .items ) == (4 if nav_src == "derived_nav" else 3 )
45
+
46
+ # items = index.md, baz.md, borgs/, z_noindex/
32
47
33
48
assert nav .items [1 ].is_page
34
49
assert nav .items [1 ].file .name == "baz"
35
50
assert not nav .items [1 ].is_section
36
51
37
- sec = nav .items [2 ]
38
- assert isinstance (sec , SectionPage )
39
- assert sec .is_section
40
- assert sec .is_page
41
- assert sec .title == "Borgs"
42
- assert sec .url in ("borgs/" , "borgs/index.html" )
43
- assert sec .file .name == "index"
44
-
45
- assert len (sec .children ) == 2
46
- assert sec .children [0 ].is_page
47
- assert sec .children [0 ].file .name == "bar"
48
-
49
- assert nav .items [1 ].next_page == sec
50
- assert sec .children [1 ].parent == sec
52
+ assert nav .items [0 ].file .name == "index"
53
+ assert not nav .items [0 ].is_section
54
+
55
+ borgs_sec = nav .items [2 ]
56
+ assert isinstance (borgs_sec , SectionPage )
57
+ assert borgs_sec .is_section
58
+ assert borgs_sec .is_page
59
+ assert borgs_sec .title == "Borgs"
60
+ if index_file == "foo.md" :
61
+ assert borgs_sec .url in ("borgs/foo/" , "borgs/foo.html" )
62
+ assert borgs_sec .file .name == "foo"
63
+ else :
64
+ assert borgs_sec .url in ("borgs/" , "borgs/index.html" )
65
+ assert borgs_sec .file .name == "index"
66
+
67
+ assert len (borgs_sec .children ) == 2
68
+ assert borgs_sec .children [0 ].is_page
69
+ if index_file == "foo.md" :
70
+ assert borgs_sec .children [0 ].file .name == "index"
71
+ else :
72
+ assert borgs_sec .children [0 ].file .name == "bar"
73
+
74
+ assert nav .items [1 ].next_page == borgs_sec
75
+ assert borgs_sec .children [1 ].parent == borgs_sec
76
+
77
+ # check order
78
+ if index_file == "foo.md" :
79
+ # new section page
80
+ assert nav .items [3 ].previous_page == nav .items [2 ].children [- 1 ]
81
+ assert nav .items [3 ].next_page == nav .items [3 ].children [0 ]
82
+
83
+ # page previously before new section page
84
+ assert nav .items [2 ].children [0 ].previous_page == nav .items [2 ]
85
+ # page previously after new section page
86
+ assert nav .items [2 ].children [1 ].previous_page == nav .items [2 ].children [0 ]
87
+
88
+ # first child
89
+ assert nav .items [2 ].children [0 ].next_page == nav .items [2 ].children [1 ]
90
+
91
+ # previous page before child[0]
92
+ assert nav .items [1 ].next_page == nav .items [2 ]
51
93
52
94
53
95
@dataclasses .dataclass
@@ -74,7 +116,9 @@ def test_nav_repr(golden, tmpdir):
74
116
config = dict (nav = golden ["input" ], use_directory_urls = use_directory_urls )
75
117
files = FakeFiles (config )
76
118
nav = get_navigation (files , config )
77
- nav = plugin .SectionIndexPlugin ().on_nav (nav , config , files )
119
+ instance = plugin .SectionIndexPlugin ()
120
+ instance .load_config (config )
121
+ nav = instance .on_nav (nav , instance .config , files )
78
122
assert str (nav ) == golden .out [use_directory_urls ]
79
123
80
124
0 commit comments