-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
/
Copy pathsidebar.test.js
121 lines (108 loc) · 3.62 KB
/
sidebar.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import docsifyInit from '../helpers/docsify-init.js';
describe('Test sidebar render toc structure', function () {
test('Render sidebar with loadSidebar=true and the _sidebar.md file', async () => {
await docsifyInit({
config: {
loadSidebar: '_sidebar.md',
},
markdown: {
homepage: '# Hello World',
sidebar: `
- Getting started
- [Level1](QuickStart.md)
- [Level2](QuickStart2.md)
`,
},
waitForSelector: '.sidebar-nav > ul',
});
const sidebarElm = document.querySelector('.sidebar');
/**
* Expected render result
* ==========================
*<ul>
* <li>
* Getting started
* <ul>
* <li>
* <a href="#/QuickStart" title="Level1">Level1</a>
* <ul>
* <li><a href="#/QuickStart2" title="Level2">Level2</a></li>
* </ul>
* </li>
* </ul>
* </li>
* </ul>
*/
const GettingStarted = document.querySelector('.sidebar-nav > ul > li');
const level1_Elm = document.querySelector(
'.sidebar-nav > ul > li > ul> li',
);
const level1_A_tag = level1_Elm.querySelector('a');
const level2_Elm = level1_Elm.querySelector(' ul > li ');
const level2_A_tag = level2_Elm.querySelector('a');
expect(sidebarElm).not.toBeNull();
expect(GettingStarted).not.toBeNull();
expect(level1_Elm).not.toBeNull();
expect(level1_A_tag).not.toBeNull();
expect(level2_Elm).not.toBeNull();
expect(level2_A_tag).not.toBeNull();
expect(level1_A_tag.textContent).toContain('Level1');
expect(level2_A_tag.textContent).toContain('Level2');
});
test('Render sidebar with loadSidebar=false should be same to loadSidebar=true sidebar structure', async () => {
await docsifyInit({
config: {
loadSidebar: false,
},
markdown: {
homepage: `
# Getting started
some thing
## Level1
foo
### Level2
bar
`,
},
waitForSelector: '.sidebar-nav > ul',
});
const sidebarElm = document.querySelector('.sidebar');
/**
* Expected render result
* ==========================
*<ul>
* <li>
* Getting started
* <ul>
* <li>
* <a href="#/QuickStart" title="Level1">Level1</a>
* <ul>
* <li><a href="#/QuickStart2" title="Level2">Level2</a></li>
* </ul>
* </li>
* </ul>
* </li>
* </ul>
*/
const appSubSidebarTargetElm = document.querySelector('.sidebar-nav > ul');
expect(appSubSidebarTargetElm).not.toBeNull();
const ulClass = appSubSidebarTargetElm.className;
// the sidebar-nav > ul should have the class app-sub-sidebar
expect(ulClass).toContain('app-sub-sidebar');
const GettingStarted = document.querySelector('.sidebar-nav > ul > li');
const level1_Elm = document.querySelector(
'.sidebar-nav > ul > li > ul> li',
);
const level1_A_tag = level1_Elm.querySelector('a');
const level2_Elm = level1_Elm.querySelector(' ul > li ');
const level2_A_tag = level2_Elm.querySelector('a');
expect(sidebarElm).not.toBeNull();
expect(GettingStarted).not.toBeNull();
expect(level1_Elm).not.toBeNull();
expect(level1_A_tag).not.toBeNull();
expect(level2_Elm).not.toBeNull();
expect(level2_A_tag).not.toBeNull();
expect(level1_A_tag.textContent).toContain('Level1');
expect(level2_A_tag.textContent).toContain('Level2');
});
});