@@ -3,10 +3,18 @@ import { EOL } from "os";
33import { createStubLogger , expectEqualWrites } from "../adapters/logger.stubs" ;
44import { createEmptyConversionResults } from "../conversion/conversionResults.stubs" ;
55import { ESLintRuleOptions } from "../rules/types" ;
6+ import { PackageManager } from "./packages/packageManagers" ;
67import { reportConversionResults } from "./reportConversionResults" ;
78
9+ const createStubDependencies = ( packageManager = PackageManager . Yarn ) => {
10+ const choosePackageManager = jest . fn ( ) . mockResolvedValueOnce ( packageManager ) ;
11+ const logger = createStubLogger ( ) ;
12+
13+ return { choosePackageManager, logger } ;
14+ } ;
15+
816describe ( "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 ( ) => {
1018 // Arrange
1119 const conversionResults = createEmptyConversionResults ( {
1220 converted : new Map < string , ESLintRuleOptions > ( [
@@ -21,19 +29,22 @@ describe("reportConversionResults", () => {
2129 ] ) ,
2230 } ) ;
2331
24- const logger = createStubLogger ( ) ;
32+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
2533
2634 // Act
27- reportConversionResults ( { logger } , conversionResults ) ;
35+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
2836
2937 // Assert
3038 expectEqualWrites (
3139 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` ,
3344 ) ;
3445 } ) ;
3546
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 ( ) => {
3748 // Arrange
3849 const conversionResults = createEmptyConversionResults ( {
3950 converted : new Map < string , ESLintRuleOptions > ( [
@@ -49,10 +60,10 @@ describe("reportConversionResults", () => {
4960 ] ) ,
5061 } ) ;
5162
52- const logger = createStubLogger ( ) ;
63+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
5364
5465 // Act
55- reportConversionResults ( { logger } , conversionResults ) ;
66+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
5667
5768 // Assert
5869 expectEqualWrites (
@@ -62,10 +73,13 @@ describe("reportConversionResults", () => {
6273 ` * tslint-rule-one:` ,
6374 ` - 1` ,
6475 ` - 2` ,
76+ `` ,
77+ `⚡ 3 packages are required for running with ESLint. ⚡` ,
78+ ` yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev` ,
6579 ) ;
6680 } ) ;
6781
68- it ( "logs successful conversions when there are multiple converted rules" , ( ) => {
82+ it ( "logs successful conversions when there are multiple converted rules" , async ( ) => {
6983 // Arrange
7084 const conversionResults = createEmptyConversionResults ( {
7185 converted : new Map < string , ESLintRuleOptions > ( [
@@ -90,35 +104,39 @@ describe("reportConversionResults", () => {
90104 ] ) ,
91105 } ) ;
92106
93- const logger = createStubLogger ( ) ;
107+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
94108
95109 // Act
96- reportConversionResults ( { logger } , conversionResults ) ;
110+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
97111
98112 // Assert
99113 expectEqualWrites (
100114 logger . stdout . write ,
101- `✨ 2 rules replaced with their ESLint equivalents. ✨${ EOL } ` ,
115+ `✨ 2 rules replaced with their ESLint equivalents. ✨` ,
116+ `` ,
102117 `❗ 2 ESLint rules behave differently from their TSLint counterparts ❗` ,
103118 ` * tslint-rule-one:` ,
104119 ` - 1` ,
105120 ` - 2` ,
106121 ` * tslint-rule-two:` ,
107122 ` - 3` ,
108123 ` - 4` ,
124+ `` ,
125+ `⚡ 3 packages are required for running with ESLint. ⚡` ,
126+ ` yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint --dev` ,
109127 ) ;
110128 } ) ;
111129
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 ( ) => {
113131 // Arrange
114132 const conversionResults = createEmptyConversionResults ( {
115133 failed : [ { getSummary : ( ) => "It broke." } ] ,
116134 } ) ;
117135
118- const logger = createStubLogger ( ) ;
136+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
119137
120138 // Act
121- reportConversionResults ( { logger } , conversionResults ) ;
139+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
122140
123141 // Assert
124142 expectEqualWrites (
@@ -128,16 +146,16 @@ describe("reportConversionResults", () => {
128146 ) ;
129147 } ) ;
130148
131- it ( "logs failed conversions when there are multiple failed conversions" , ( ) => {
149+ it ( "logs failed conversions when there are multiple failed conversions" , async ( ) => {
132150 // Arrange
133151 const conversionResults = createEmptyConversionResults ( {
134152 failed : [ { getSummary : ( ) => "It broke." } , { getSummary : ( ) => "It really broke." } ] ,
135153 } ) ;
136154
137- const logger = createStubLogger ( ) ;
155+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
138156
139157 // Act
140- reportConversionResults ( { logger } , conversionResults ) ;
158+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
141159
142160 // Assert
143161 expectEqualWrites (
@@ -147,7 +165,7 @@ describe("reportConversionResults", () => {
147165 ) ;
148166 } ) ;
149167
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 ( ) => {
151169 // Arrange
152170 const conversionResults = createEmptyConversionResults ( {
153171 missing : [
@@ -159,24 +177,27 @@ describe("reportConversionResults", () => {
159177 ] ,
160178 } ) ;
161179
162- const logger = createStubLogger ( ) ;
180+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
163181
164182 // Act
165- reportConversionResults ( { logger } , conversionResults ) ;
183+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
166184
167185 // Assert
168186 expectEqualWrites (
169187 logger . stdout . write ,
170188 "❓ 1 rule does not yet have an ESLint equivalent ❓" ,
171189 ` 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" ,
172193 ) ;
173194 expectEqualWrites (
174195 logger . info . write ,
175196 'tslint-to-eslint-config does not know the ESLint equivalent for TSLint\'s "tslint-rule-one"' ,
176197 ) ;
177198 } ) ;
178199
179- it ( "logs missing rules when there are missing rules" , ( ) => {
200+ it ( "logs missing rules when there are missing rules" , async ( ) => {
180201 // Arrange
181202 const conversionResults = createEmptyConversionResults ( {
182203 missing : [
@@ -193,16 +214,19 @@ describe("reportConversionResults", () => {
193214 ] ,
194215 } ) ;
195216
196- const logger = createStubLogger ( ) ;
217+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
197218
198219 // Act
199- reportConversionResults ( { logger } , conversionResults ) ;
220+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
200221
201222 // Assert
202223 expectEqualWrites (
203224 logger . stdout . write ,
204225 "❓ 2 rules do not yet have ESLint equivalents ❓" ,
205226 ` 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" ,
206230 ) ;
207231 expectEqualWrites (
208232 logger . info . write ,
@@ -211,42 +235,22 @@ describe("reportConversionResults", () => {
211235 ) ;
212236 } ) ;
213237
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 ( ) => {
234239 // Arrange
235240 const conversionResults = createEmptyConversionResults ( {
236241 plugins : new Set ( [ "plugin-one" , "plugin-two" ] ) ,
237242 } ) ;
238243
239- const logger = createStubLogger ( ) ;
244+ const { choosePackageManager , logger } = createStubDependencies ( ) ;
240245
241246 // Act
242- reportConversionResults ( { logger } , conversionResults ) ;
247+ await reportConversionResults ( { choosePackageManager , logger } , conversionResults ) ;
243248
244249 // Assert
245250 expectEqualWrites (
246251 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" ,
250254 ) ;
251255 } ) ;
252256} ) ;
0 commit comments