1515
1616
1717@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 ):
2021 config = dict (
2122 docs_dir = str (example_dir / "docs" ),
2223 site_dir = tmpdir ,
2324 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 ,
2528 )
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
2635 files = get_files (config )
2736 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 )
2942
30- assert len (nav .pages ) == 5
31- assert len (nav .items ) == 3
43+ assert len (nav .pages ) == (6 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/
3247
3348 assert nav .items [1 ].is_page
3449 assert nav .items [1 ].file .name == "baz"
3550 assert not nav .items [1 ].is_section
3651
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"
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"
4466
45- assert len (sec .children ) == 2
46- assert sec .children [0 ].is_page
47- assert sec .children [0 ].file .name == "bar"
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"
4873
49- assert nav .items [1 ].next_page == sec
50- assert sec .children [1 ].parent == sec
74+ assert nav .items [1 ].next_page == borgs_sec
75+ assert borgs_sec .children [1 ].parent == borgs_sec
5176
5277
5378@dataclasses .dataclass
@@ -74,7 +99,9 @@ def test_nav_repr(golden, tmpdir):
7499 config = dict (nav = golden ["input" ], use_directory_urls = use_directory_urls )
75100 files = FakeFiles (config )
76101 nav = get_navigation (files , config )
77- nav = plugin .SectionIndexPlugin ().on_nav (nav , config , files )
102+ instance = plugin .SectionIndexPlugin ()
103+ instance .load_config (config )
104+ nav = instance .on_nav (nav , instance .config , files )
78105 assert str (nav ) == golden .out [use_directory_urls ]
79106
80107
0 commit comments