@@ -7,147 +7,158 @@ const {
7
7
readFile
8
8
} = require ( './util' )
9
9
10
- describe ( 'Page' , ( ) => {
11
- let app
12
- let computed
13
-
14
- beforeAll ( async ( ) => {
15
- app = new App ( )
16
- await app . process ( )
17
- computed = new app . ClientComputedMixinConstructor ( )
18
- } )
10
+ let app
11
+ let computed
19
12
20
- test ( 'pure route' , async ( ) => {
21
- const page = new Page ( { path : '/' } , app )
13
+ beforeAll ( async ( ) => {
14
+ app = new App ( )
15
+ await app . process ( )
16
+ computed = new app . ClientComputedMixinConstructor ( )
17
+ } )
22
18
23
- expect ( page . path ) . toBe ( '/' )
24
- expect ( page . regularPath ) . toBe ( '/' )
19
+ async function setupPage ( options , processOption = { } ) {
20
+ const page = new Page ( options , app )
21
+ await page . process ( { computed, ...processOption } )
22
+ return page
23
+ }
25
24
26
- await page . process ( { computed } )
25
+ test ( 'pure route' , async ( ) => {
26
+ const page = await setupPage ( { path : '/' } )
27
27
28
- expect ( page . path ) . toBe ( '/' )
29
- expect ( page . regularPath ) . toBe ( '/' )
30
- } )
28
+ expect ( page . path ) . toBe ( '/' )
29
+ expect ( page . regularPath ) . toBe ( '/' )
30
+ expect ( page . frontmatter ) . toEqual ( { } )
31
+ } )
31
32
32
- test ( 'pure route - encodeURI' , async ( ) => {
33
- const path = '/尤/'
34
- const page = new Page ( { path } , app )
33
+ test ( 'pure route - encodeURI' , async ( ) => {
34
+ const path = '/尤/'
35
+ const page = await setupPage ( { path } )
35
36
36
- expect ( page . path ) . toBe ( encodeURI ( path ) )
37
- expect ( page . regularPath ) . toBe ( encodeURI ( path ) )
38
- } )
37
+ expect ( page . path ) . toBe ( encodeURI ( path ) )
38
+ expect ( page . regularPath ) . toBe ( encodeURI ( path ) )
39
+ expect ( page . frontmatter ) . toEqual ( { } )
40
+ } )
39
41
40
- test ( 'pure route - custom frontmatter' , async ( ) => {
41
- const frontmatter = { title : 'alpha' }
42
- const page = new Page ( {
43
- path : '/' ,
44
- frontmatter
45
- } , app )
46
- expect ( page . frontmatter ) . toBe ( frontmatter )
42
+ test ( 'pure route - custom frontmatter' , async ( ) => {
43
+ const frontmatter = { title : 'alpha' }
44
+ const page = await setupPage ( {
45
+ path : '/' ,
46
+ frontmatter
47
47
} )
48
48
49
- test ( 'pure route - enhancers' , async ( ) => {
50
- const frontmatter = { title : 'alpha' }
51
- const page = new Page ( {
52
- path : '/' ,
53
- frontmatter
54
- } , app )
55
-
56
- expect ( page . frontmatter . title ) . toBe ( 'alpha' )
57
-
58
- const enhancers = [
59
- {
60
- name : 'plugin-a' ,
61
- value : page => {
62
- page . frontmatter . title = 'beta'
63
- }
49
+ expect ( page . frontmatter . title ) . toBe ( frontmatter . title )
50
+ } )
51
+
52
+ test ( 'pure route - enhancers' , async ( ) => {
53
+ const frontmatter = { title : 'alpha' }
54
+ const enhancers = [
55
+ {
56
+ name : 'plugin-a' ,
57
+ value : page => {
58
+ page . frontmatter . title = 'beta'
64
59
}
65
- ]
66
- await page . process ( { computed, enhancers } )
60
+ }
61
+ ]
62
+ const page = await setupPage ( { path : '/' , frontmatter } , { enhancers } )
67
63
68
- expect ( page . frontmatter . title ) . toBe ( 'beta' )
69
- } )
64
+ expect ( page . frontmatter . title ) . toBe ( 'beta' )
65
+ } )
70
66
71
- test ( 'markdown page - pointing to a markdown file' , async ( ) => {
72
- const { relative, filePath } = getDocument ( 'README.md' )
73
- const page = new Page ( { filePath, relative } , app )
67
+ test ( 'markdown page - pointing to a markdown file' , async ( ) => {
68
+ const { relative, filePath } = getDocument ( 'README.md' )
69
+ const markdown = getMarkdown ( )
70
+ const page = await setupPage ( { filePath, relative } , { markdown } )
74
71
75
- expect ( page . _filePath ) . toBe ( filePath )
76
- expect ( page . regularPath ) . toBe ( '/' )
77
- expect ( page . path ) . toBe ( '/' )
78
- expect ( page . frontmatter ) . toEqual ( { } )
72
+ expect ( page . _filePath ) . toBe ( filePath )
73
+ expect ( page . regularPath ) . toBe ( '/' )
74
+ expect ( page . path ) . toBe ( '/' )
75
+ expect ( page . frontmatter ) . toEqual ( { } )
79
76
80
- const markdown = getMarkdown ( )
81
- await page . process ( { computed, markdown } )
77
+ const content = await readFile ( filePath )
82
78
83
- expect ( page . title ) . toBe ( 'Home' )
84
- const content = await readFile ( filePath )
85
- expect ( page . _content ) . toBe ( content )
86
- expect ( page . _strippedContent ) . toBe ( content )
87
- } )
79
+ expect ( page . _content ) . toBe ( content )
80
+ expect ( page . _strippedContent ) . toBe ( content )
81
+ } )
82
+
83
+ test ( 'markdown page - pointing to a markdown file with frontmatter' , async ( ) => {
84
+ const { relative, filePath } = getDocument ( 'alpha.md' )
85
+ const title = 'VuePress Alpha' // from fixture
86
+ const markdown = getMarkdown ( )
87
+ const page = await setupPage ( { filePath, relative } , { markdown } )
88
+
89
+ expect ( page . _filePath ) . toBe ( filePath )
90
+ expect ( page . regularPath ) . toBe ( '/alpha.html' )
91
+ expect ( page . path ) . toBe ( '/alpha.html' )
92
+ expect ( page . frontmatter . title ) . toBe ( title )
93
+ expect ( page . _content . startsWith ( '---' ) ) . toBe ( true )
94
+ expect ( page . _strippedContent . startsWith ( '---' ) ) . toBe ( false )
95
+ } )
96
+
97
+ test ( 'enhancer - should loop over sync enhancers' , async ( ) => {
98
+ const page = await setupPage ( { path : '/' } )
99
+ const enhancers = [
100
+ {
101
+ name : 'foo' ,
102
+ value : jest . fn ( )
103
+ } ,
104
+ {
105
+ name : 'foo' ,
106
+ value : jest . fn ( )
107
+ }
108
+ ]
109
+ await page . enhance ( enhancers )
110
+
111
+ return enhancers . map ( enhancer => expect ( enhancer . value ) . toHaveBeenCalled ( ) )
112
+ } )
88
113
89
- test ( 'markdown page - pointing to a markdown file with frontmatter' , async ( ) => {
90
- const { relative, filePath } = getDocument ( 'alpha.md' )
91
- const page = new Page ( { filePath, relative } , app )
114
+ test ( 'enhancer - should loop over sync and async enhancers' , async ( ) => {
115
+ const page = await setupPage ( { path : '/' } )
116
+ const enhancers = [
117
+ {
118
+ name : 'foo' ,
119
+ value : jest . fn ( )
120
+ } ,
121
+ {
122
+ name : 'foo' ,
123
+ value : jest . fn ( )
124
+ }
125
+ ]
126
+ const mixedEnhancers = [ ...enhancers , {
127
+ name : 'blog' ,
128
+ value : jest . fn ( ) . mockResolvedValue ( { } )
129
+ } ]
130
+ await page . enhance ( mixedEnhancers )
131
+
132
+ return mixedEnhancers . map ( enhancer => expect ( enhancer . value ) . toHaveBeenCalled ( ) )
133
+ } )
92
134
93
- expect ( page . _filePath ) . toBe ( filePath )
94
- expect ( page . regularPath ) . toBe ( '/alpha.html' )
95
- expect ( page . path ) . toBe ( '/alpha.html' )
96
- expect ( page . frontmatter ) . toEqual ( { } )
135
+ test ( 'enhancer - should log and throw an error when enhancing fails' , async ( ) => {
136
+ global . console . log = jest . fn ( )
137
+ const pluginName = 'error-plugin'
97
138
98
- const markdown = getMarkdown ( )
99
- await page . process ( { computed , markdown } )
139
+ const page = await setupPage ( { path : '/' } )
140
+ const error = { errorMessage : 'this is an error message' }
100
141
101
- expect ( page . title ) . toBe ( page . frontmatter . title )
102
- expect ( page . _content . startsWith ( '---' ) ) . toBe ( true )
103
- expect ( page . _strippedContent . startsWith ( '---' ) ) . toBe ( false )
104
- } )
142
+ await expect ( page . enhance ( [ {
143
+ name : pluginName ,
144
+ value : jest . fn ( ) . mockRejectedValue ( error )
145
+ } ] ) ) . rejects . toThrowError ( `[ ${ pluginName } ] execute extendPageData failed.` )
105
146
106
- describe ( 'enhance - ' , ( ) => {
107
- let page
108
- let enhancers
109
-
110
- beforeEach ( ( ) => {
111
- page = new Page ( { path : '/' } , app )
112
- enhancers = [
113
- {
114
- name : 'foo' ,
115
- value : jest . fn ( )
116
- } ,
117
- {
118
- name : 'bar' ,
119
- value : jest . fn ( )
120
- }
121
- ]
122
- global . console . log = jest . fn ( )
123
- } )
124
-
125
- test ( 'should loop over sync enhancers' , async ( ) => {
126
- await page . enhance ( enhancers )
127
-
128
- return enhancers . map ( enhancer => expect ( enhancer . value ) . toHaveBeenCalled ( ) )
129
- } )
130
-
131
- test ( 'should loop over sync and async enhancers' , async ( ) => {
132
- const mixedEnhancers = [ ...enhancers , {
133
- name : 'blog' ,
134
- value : jest . fn ( ) . mockResolvedValue ( { } )
135
- } ]
136
- await page . enhance ( mixedEnhancers )
137
-
138
- return mixedEnhancers . map ( enhancer => expect ( enhancer . value ) . toHaveBeenCalled ( ) )
139
- } )
140
-
141
- test ( 'should log and throw an error when enhancing fails' , async ( ) => {
142
- const error = { errorMessage : 'this is an error message' }
143
- const pluginName = 'error-plugin'
144
-
145
- await expect ( page . enhance ( [ {
146
- name : pluginName ,
147
- value : jest . fn ( ) . mockRejectedValue ( error )
148
- } ] ) ) . rejects . toThrowError ( `[${ pluginName } ] execute extendPageData failed.` )
149
-
150
- expect ( console . log ) . toHaveBeenCalledWith ( error )
151
- } )
152
- } )
147
+ expect ( console . log ) . toHaveBeenCalledWith ( error )
148
+ // TODO should throw error
153
149
} )
150
+
151
+ // TODO Permalink
152
+ // TODO Title
153
+ // TODO I18n
154
+ // TODO Meta
155
+ // TODO Add a page with explicit content
156
+ // TODO Excerpt
157
+ // TODO SFC
158
+ // TODO Headers
159
+
160
+ // TODO get date
161
+ // TODO get strippedFilename
162
+ // TODO get slug
163
+ // TODO get filename
164
+ // TODO get dirname
0 commit comments