@@ -3,10 +3,18 @@ import { EOL } from "os";
3
3
import { createStubLogger , expectEqualWrites } from "../adapters/logger.stubs" ;
4
4
import { createEmptyConversionResults } from "../conversion/conversionResults.stubs" ;
5
5
import { ESLintRuleOptions } from "../rules/types" ;
6
+ import { PackageManager } from "./packages/packageManagers" ;
6
7
import { reportConversionResults } from "./reportConversionResults" ;
7
8
9
+ const createStubDependencies = ( packageManager = PackageManager . Yarn ) => {
10
+ const choosePackageManager = jest . fn ( ) . mockResolvedValueOnce ( packageManager ) ;
11
+ const logger = createStubLogger ( ) ;
12
+
13
+ return { choosePackageManager, logger } ;
14
+ } ;
15
+
8
16
describe ( "reportConversionResults" , ( ) => {
9
- it ( "logs a successful conversion without notices when there is one converted rule without notices" , ( ) => {
17
+ it ( "logs a successful conversion without notices when there is one converted rule without notices" , async ( ) => {
10
18
// Arrange
11
19
const conversionResults = createEmptyConversionResults ( {
12
20
converted : new Map < string , ESLintRuleOptions > ( [
@@ -21,19 +29,22 @@ describe("reportConversionResults", () => {
21
29
] ) ,
22
30
} ) ;
23
31
24
- const logger = createStubLogger ( ) ;
32
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
25
33
26
34
// Act
27
- reportConversionResults ( { logger } , conversionResults ) ;
35
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
28
36
29
37
// Assert
30
38
expectEqualWrites (
31
39
logger . stdout . write ,
32
- `✨ 1 rule replaced with its ESLint equivalent. ✨${ EOL } ` ,
40
+ `✨ 1 rule replaced with its ESLint equivalent. ✨` ,
41
+ `` ,
42
+ `⚡ 3 packages are required for running with ESLint. ⚡` ,
43
+ ` yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev` ,
33
44
) ;
34
45
} ) ;
35
46
36
- it ( "logs a successful conversion with notices when there is one converted rule with notices" , ( ) => {
47
+ it ( "logs a successful conversion with notices when there is one converted rule with notices" , async ( ) => {
37
48
// Arrange
38
49
const conversionResults = createEmptyConversionResults ( {
39
50
converted : new Map < string , ESLintRuleOptions > ( [
@@ -49,10 +60,10 @@ describe("reportConversionResults", () => {
49
60
] ) ,
50
61
} ) ;
51
62
52
- const logger = createStubLogger ( ) ;
63
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
53
64
54
65
// Act
55
- reportConversionResults ( { logger } , conversionResults ) ;
66
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
56
67
57
68
// Assert
58
69
expectEqualWrites (
@@ -62,10 +73,13 @@ describe("reportConversionResults", () => {
62
73
` * tslint-rule-one:` ,
63
74
` - 1` ,
64
75
` - 2` ,
76
+ `` ,
77
+ `⚡ 3 packages are required for running with ESLint. ⚡` ,
78
+ ` yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev` ,
65
79
) ;
66
80
} ) ;
67
81
68
- it ( "logs successful conversions when there are multiple converted rules" , ( ) => {
82
+ it ( "logs successful conversions when there are multiple converted rules" , async ( ) => {
69
83
// Arrange
70
84
const conversionResults = createEmptyConversionResults ( {
71
85
converted : new Map < string , ESLintRuleOptions > ( [
@@ -90,35 +104,39 @@ describe("reportConversionResults", () => {
90
104
] ) ,
91
105
} ) ;
92
106
93
- const logger = createStubLogger ( ) ;
107
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
94
108
95
109
// Act
96
- reportConversionResults ( { logger } , conversionResults ) ;
110
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
97
111
98
112
// Assert
99
113
expectEqualWrites (
100
114
logger . stdout . write ,
101
- `✨ 2 rules replaced with their ESLint equivalents. ✨${ EOL } ` ,
115
+ `✨ 2 rules replaced with their ESLint equivalents. ✨` ,
116
+ `` ,
102
117
`❗ 2 ESLint rules behave differently from their TSLint counterparts ❗` ,
103
118
` * tslint-rule-one:` ,
104
119
` - 1` ,
105
120
` - 2` ,
106
121
` * tslint-rule-two:` ,
107
122
` - 3` ,
108
123
` - 4` ,
124
+ `` ,
125
+ `⚡ 3 packages are required for running with ESLint. ⚡` ,
126
+ ` yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev` ,
109
127
) ;
110
128
} ) ;
111
129
112
- it ( "logs a failed conversion when there is one failed conversion" , ( ) => {
130
+ it ( "logs a failed conversion when there is one failed conversion" , async ( ) => {
113
131
// Arrange
114
132
const conversionResults = createEmptyConversionResults ( {
115
133
failed : [ { getSummary : ( ) => "It broke." } ] ,
116
134
} ) ;
117
135
118
- const logger = createStubLogger ( ) ;
136
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
119
137
120
138
// Act
121
- reportConversionResults ( { logger } , conversionResults ) ;
139
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
122
140
123
141
// Assert
124
142
expectEqualWrites (
@@ -128,16 +146,16 @@ describe("reportConversionResults", () => {
128
146
) ;
129
147
} ) ;
130
148
131
- it ( "logs failed conversions when there are multiple failed conversions" , ( ) => {
149
+ it ( "logs failed conversions when there are multiple failed conversions" , async ( ) => {
132
150
// Arrange
133
151
const conversionResults = createEmptyConversionResults ( {
134
152
failed : [ { getSummary : ( ) => "It broke." } , { getSummary : ( ) => "It really broke." } ] ,
135
153
} ) ;
136
154
137
- const logger = createStubLogger ( ) ;
155
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
138
156
139
157
// Act
140
- reportConversionResults ( { logger } , conversionResults ) ;
158
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
141
159
142
160
// Assert
143
161
expectEqualWrites (
@@ -147,7 +165,7 @@ describe("reportConversionResults", () => {
147
165
) ;
148
166
} ) ;
149
167
150
- it ( "logs a missing rule when there is a missing rule" , ( ) => {
168
+ it ( "logs a missing rule when there is a missing rule" , async ( ) => {
151
169
// Arrange
152
170
const conversionResults = createEmptyConversionResults ( {
153
171
missing : [
@@ -159,24 +177,27 @@ describe("reportConversionResults", () => {
159
177
] ,
160
178
} ) ;
161
179
162
- const logger = createStubLogger ( ) ;
180
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
163
181
164
182
// Act
165
- reportConversionResults ( { logger } , conversionResults ) ;
183
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
166
184
167
185
// Assert
168
186
expectEqualWrites (
169
187
logger . stdout . write ,
170
188
"❓ 1 rule does not yet have an ESLint equivalent ❓" ,
171
189
` See generated log file; defaulting to eslint-plugin-tslint for it.` ,
190
+ "" ,
191
+ "⚡ 3 packages are required for running with ESLint. ⚡" ,
192
+ " yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev" ,
172
193
) ;
173
194
expectEqualWrites (
174
195
logger . info . write ,
175
196
'tslint-to-eslint-config does not know the ESLint equivalent for TSLint\'s "tslint-rule-one"' ,
176
197
) ;
177
198
} ) ;
178
199
179
- it ( "logs missing rules when there are missing rules" , ( ) => {
200
+ it ( "logs missing rules when there are missing rules" , async ( ) => {
180
201
// Arrange
181
202
const conversionResults = createEmptyConversionResults ( {
182
203
missing : [
@@ -193,16 +214,19 @@ describe("reportConversionResults", () => {
193
214
] ,
194
215
} ) ;
195
216
196
- const logger = createStubLogger ( ) ;
217
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
197
218
198
219
// Act
199
- reportConversionResults ( { logger } , conversionResults ) ;
220
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
200
221
201
222
// Assert
202
223
expectEqualWrites (
203
224
logger . stdout . write ,
204
225
"❓ 2 rules do not yet have ESLint equivalents ❓" ,
205
226
` See generated log file; defaulting to eslint-plugin-tslint for these rules.` ,
227
+ "" ,
228
+ "⚡ 3 packages are required for running with ESLint. ⚡" ,
229
+ " yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev" ,
206
230
) ;
207
231
expectEqualWrites (
208
232
logger . info . write ,
@@ -211,42 +235,22 @@ describe("reportConversionResults", () => {
211
235
) ;
212
236
} ) ;
213
237
214
- it ( "logs a missing plugin when there is a missing plugin" , ( ) => {
215
- // Arrange
216
- const conversionResults = createEmptyConversionResults ( {
217
- plugins : new Set ( [ "plugin-one" ] ) ,
218
- } ) ;
219
-
220
- const logger = createStubLogger ( ) ;
221
-
222
- // Act
223
- reportConversionResults ( { logger } , conversionResults ) ;
224
-
225
- // Assert
226
- expectEqualWrites (
227
- logger . stdout . write ,
228
- "⚡ 1 package is required for new ESLint rules. ⚡" ,
229
- " plugin-one" ,
230
- ) ;
231
- } ) ;
232
-
233
- it ( "logs missing plugins when there are missing plugins" , ( ) => {
238
+ it ( "logs missing plugins when there are missing plugins" , async ( ) => {
234
239
// Arrange
235
240
const conversionResults = createEmptyConversionResults ( {
236
241
plugins : new Set ( [ "plugin-one" , "plugin-two" ] ) ,
237
242
} ) ;
238
243
239
- const logger = createStubLogger ( ) ;
244
+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
240
245
241
246
// Act
242
- reportConversionResults ( { logger } , conversionResults ) ;
247
+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
243
248
244
249
// Assert
245
250
expectEqualWrites (
246
251
logger . stdout . write ,
247
- "⚡ 2 packages are required for new ESLint rules. ⚡" ,
248
- " plugin-one" ,
249
- " plugin-two" ,
252
+ "⚡ 5 packages are required for running with ESLint. ⚡" ,
253
+ " yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint plugin-one plugin-two --dev" ,
250
254
) ;
251
255
} ) ;
252
256
} ) ;
0 commit comments