@@ -10,12 +10,20 @@ vi.mock("../readLogoSizing.js", () => ({
10
10
} ,
11
11
} ) ) ;
12
12
13
+ const mockGetUsageFromReadme = vi . fn ( ) . mockResolvedValue ( { } ) ;
14
+
15
+ vi . mock ( "./getUsageFromReadme.js" , ( ) => ( {
16
+ get getUsageFromReadme ( ) {
17
+ return mockGetUsageFromReadme ;
18
+ } ,
19
+ } ) ) ;
20
+
13
21
describe ( "readDefaultsFromReadme" , ( ) => {
14
22
describe ( "logo" , ( ) => {
15
23
it ( "defaults to undefined when it cannot be found" , async ( ) => {
16
24
const logo = await readDefaultsFromReadme (
17
25
( ) => Promise . resolve ( `nothing.` ) ,
18
- undefined ,
26
+ ( ) => Promise . resolve ( undefined ) ,
19
27
) . logo ( ) ;
20
28
21
29
expect ( logo ) . toBeUndefined ( ) ;
@@ -26,7 +34,7 @@ describe("readDefaultsFromReadme", () => {
26
34
( ) =>
27
35
Promise . resolve ( `
28
36
<img src=abc/def.jpg/>` ) ,
29
- undefined ,
37
+ ( ) => Promise . resolve ( undefined ) ,
30
38
) . logo ( ) ;
31
39
32
40
expect ( logo ) . toEqual ( {
@@ -40,7 +48,7 @@ describe("readDefaultsFromReadme", () => {
40
48
( ) =>
41
49
Promise . resolve ( `
42
50
<img src='abc/def.jpg'/>` ) ,
43
- undefined ,
51
+ ( ) => Promise . resolve ( undefined ) ,
44
52
) . logo ( ) ;
45
53
46
54
expect ( logo ) . toEqual ( {
@@ -54,7 +62,7 @@ describe("readDefaultsFromReadme", () => {
54
62
( ) =>
55
63
Promise . resolve ( `
56
64
<img src="abc/def.jpg"/>` ) ,
57
- undefined ,
65
+ ( ) => Promise . resolve ( undefined ) ,
58
66
) . logo ( ) ;
59
67
60
68
expect ( logo ) . toEqual ( {
@@ -68,7 +76,7 @@ describe("readDefaultsFromReadme", () => {
68
76
( ) =>
69
77
Promise . resolve ( `
70
78
<img alt="Project logo: a fancy circle" src="abc/def.jpg"/>` ) ,
71
- undefined ,
79
+ ( ) => Promise . resolve ( undefined ) ,
72
80
) . logo ( ) ;
73
81
74
82
expect ( logo ) . toEqual ( {
@@ -82,7 +90,7 @@ describe("readDefaultsFromReadme", () => {
82
90
( ) =>
83
91
Promise . resolve ( `
84
92
<img alt='Project logo: a fancy circle' src='abc/def.jpg'/>` ) ,
85
- undefined ,
93
+ ( ) => Promise . resolve ( undefined ) ,
86
94
) . logo ( ) ;
87
95
88
96
expect ( logo ) . toEqual ( {
@@ -100,7 +108,7 @@ describe("readDefaultsFromReadme", () => {
100
108
( ) =>
101
109
Promise . resolve ( `
102
110
<img alt='Project logo: a fancy circle' src='abc/def.jpg'/>` ) ,
103
- undefined ,
111
+ ( ) => Promise . resolve ( undefined ) ,
104
112
) . logo ( ) ;
105
113
106
114
expect ( logo ) . toEqual ( {
@@ -117,7 +125,7 @@ describe("readDefaultsFromReadme", () => {
117
125
<a href="#contributors" target="_blank"><img alt="👪 All Contributors: 48" src="https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-48-21bb42.svg" /></a>
118
126
<img src=abc/def.jpg/>
119
127
` ) ,
120
- undefined ,
128
+ ( ) => Promise . resolve ( undefined ) ,
121
129
) . logo ( ) ;
122
130
123
131
expect ( logo ) . toEqual ( {
@@ -149,7 +157,7 @@ describe("readDefaultsFromReadme", () => {
149
157
150
158
<img align="right" alt="Project logo: the TypeScript blue square with rounded corners, but a plus sign instead of 'TS'" src="./docs/create-typescript-app.png">
151
159
` ) ,
152
- undefined ,
160
+ ( ) => Promise . resolve ( undefined ) ,
153
161
) . logo ( ) ;
154
162
155
163
expect ( logo ) . toEqual ( {
@@ -163,7 +171,7 @@ describe("readDefaultsFromReadme", () => {
163
171
it ( "defaults to undefined when it cannot be found" , async ( ) => {
164
172
const title = await readDefaultsFromReadme (
165
173
( ) => Promise . resolve ( `nothing` ) ,
166
- undefined ,
174
+ ( ) => Promise . resolve ( undefined ) ,
167
175
) . title ( ) ;
168
176
169
177
expect ( title ) . toBeUndefined ( ) ;
@@ -172,7 +180,7 @@ describe("readDefaultsFromReadme", () => {
172
180
it ( 'reads title as markdown from "README.md" when it exists' , async ( ) => {
173
181
const title = await readDefaultsFromReadme (
174
182
( ) => Promise . resolve ( `# My Awesome Package` ) ,
175
- undefined ,
183
+ ( ) => Promise . resolve ( undefined ) ,
176
184
) . title ( ) ;
177
185
178
186
expect ( title ) . toBe ( "My Awesome Package" ) ;
@@ -181,7 +189,7 @@ describe("readDefaultsFromReadme", () => {
181
189
it ( 'reads title as HTML from "README.md" when it exists' , async ( ) => {
182
190
const title = await readDefaultsFromReadme (
183
191
( ) => Promise . resolve ( '<h1 align="center">My Awesome Package</h1>' ) ,
184
- undefined ,
192
+ ( ) => Promise . resolve ( undefined ) ,
185
193
) . title ( ) ;
186
194
187
195
expect ( title ) . toBe ( "My Awesome Package" ) ;
@@ -190,10 +198,43 @@ describe("readDefaultsFromReadme", () => {
190
198
it ( "returns undefined when title does not exist" , async ( ) => {
191
199
const title = await readDefaultsFromReadme (
192
200
( ) => Promise . resolve ( `Other text.` ) ,
193
- undefined ,
201
+ ( ) => Promise . resolve ( undefined ) ,
194
202
) . title ( ) ;
195
203
196
204
expect ( title ) . toBeUndefined ( ) ;
197
205
} ) ;
198
206
} ) ;
207
+
208
+ describe ( "usage" , ( ) => {
209
+ it ( "returns the existing usage when getUsageFromReadme provides one" , async ( ) => {
210
+ const existing = "Use it." ;
211
+
212
+ mockGetUsageFromReadme . mockReturnValueOnce ( existing ) ;
213
+
214
+ const usage = await readDefaultsFromReadme (
215
+ ( ) => Promise . resolve ( "" ) ,
216
+ ( ) => Promise . resolve ( undefined ) ,
217
+ ) . usage ( ) ;
218
+
219
+ expect ( usage ) . toBe ( existing ) ;
220
+ } ) ;
221
+
222
+ it ( "returns sample usage when getUsageFromReadme doesn't provide usage" , async ( ) => {
223
+ mockGetUsageFromReadme . mockReturnValueOnce ( undefined ) ;
224
+
225
+ const usage = await readDefaultsFromReadme (
226
+ ( ) => Promise . resolve ( "" ) ,
227
+ ( ) => Promise . resolve ( "test-repository" ) ,
228
+ ) . usage ( ) ;
229
+
230
+ expect ( usage ) . toBe ( `\`\`\`shell
231
+ npm i test-repository
232
+ \`\`\`
233
+ \`\`\`ts
234
+ import { greet } from "test-repository";
235
+
236
+ greet("Hello, world! 💖");
237
+ \`\`\`` ) ;
238
+ } ) ;
239
+ } ) ;
199
240
} ) ;
0 commit comments