@@ -107,41 +107,98 @@ describe("convertRules", () => {
107
107
expect ( ruleEquivalents ) . toEqual ( new Map ( [ [ "tslint-rule-a" , [ "eslint-rule-a" ] ] ] ) ) ;
108
108
} ) ;
109
109
110
- it ( "reports a failure when two outputs exist for a converted rule without a merger" , ( ) => {
111
- // Arrange
112
- const conversionResult = {
113
- rules : [
114
- {
115
- ruleName : "eslint-rule-a" ,
116
- } ,
117
- {
118
- ruleName : "eslint-rule-a" ,
119
- } ,
120
- ] ,
121
- } ;
122
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
123
- conversionResult,
124
- } ) ;
125
-
126
- // Act
127
- const { failed } = convertRules (
128
- { ruleConverters : converters , ruleMergers : mergers } ,
129
- { [ tslintRule . ruleName ] : tslintRule } ,
130
- new Map < string , string [ ] > ( ) ,
131
- ) ;
132
-
133
- // Assert
134
- expect ( failed ) . toEqual ( [ ConversionError . forMerger ( "eslint-rule-a" ) ] ) ;
135
- } ) ;
136
-
137
- it ( "merges rule arguments when two outputs exist for a converted rule with a merger" , ( ) => {
110
+ test . each ( [ [ undefined ] , [ [ 5 , "allow-something" , { max : 50 } ] ] ] ) (
111
+ "runs without an argument merger when both rules have the same arguments" ,
112
+ ( ruleArguments ) => {
113
+ // Arrange
114
+ const conversionResult = {
115
+ rules : [
116
+ {
117
+ ruleArguments,
118
+ ruleName : "eslint-rule-a" ,
119
+ } ,
120
+ {
121
+ ruleArguments,
122
+ ruleName : "eslint-rule-a" ,
123
+ } ,
124
+ ] ,
125
+ } ;
126
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
127
+ conversionResult,
128
+ } ) ;
129
+
130
+ // Act
131
+ const { converted, failed } = convertRules (
132
+ { ruleConverters : converters , ruleMergers : mergers } ,
133
+ { [ tslintRule . ruleName ] : tslintRule } ,
134
+ new Map < string , string [ ] > ( ) ,
135
+ ) ;
136
+
137
+ // Assert
138
+ expect ( converted ) . toEqual (
139
+ new Map ( [
140
+ [
141
+ "eslint-rule-a" ,
142
+ {
143
+ ruleArguments,
144
+ ruleName : "eslint-rule-a" ,
145
+ ruleSeverity : "error" ,
146
+ notices : [ ] ,
147
+ } ,
148
+ ] ,
149
+ ] ) ,
150
+ ) ;
151
+ expect ( failed ) . toEqual ( [ ] ) ;
152
+ } ,
153
+ ) ;
154
+
155
+ test . each ( [
156
+ [ [ [ 0 ] ] , [ [ 1 ] ] ] ,
157
+ [ [ [ "" ] ] , [ [ "allow-something" ] ] ] ,
158
+ [ [ [ { max : 0 } ] ] , [ [ { max : 50 } ] ] ] ,
159
+ [ [ [ 0 , "" , { max : 0 } ] ] , [ [ 5 , "allow-something" , { max : 50 } ] ] ] ,
160
+ ] ) (
161
+ "reports a failure when two outputs with different arguments exist for a converted rule without a merger" ,
162
+ ( [ existingArguments , newArguments ] ) => {
163
+ // Arrange
164
+ const conversionResult = {
165
+ rules : [
166
+ {
167
+ ruleArguments : existingArguments ,
168
+ ruleName : "eslint-rule-a" ,
169
+ } ,
170
+ {
171
+ ruleArguments : newArguments ,
172
+ ruleName : "eslint-rule-a" ,
173
+ } ,
174
+ ] ,
175
+ } ;
176
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
177
+ conversionResult,
178
+ } ) ;
179
+
180
+ // Act
181
+ const { failed } = convertRules (
182
+ { ruleConverters : converters , ruleMergers : mergers } ,
183
+ { [ tslintRule . ruleName ] : tslintRule } ,
184
+ new Map < string , string [ ] > ( ) ,
185
+ ) ;
186
+
187
+ // Assert
188
+ expect ( failed ) . toEqual ( [ ConversionError . forMerger ( "eslint-rule-a" ) ] ) ;
189
+ } ,
190
+ ) ;
191
+
192
+ it ( "merges rule arguments when two outputs with different arguments exist for a converted rule with a merger" , ( ) => {
138
193
// Arrange
139
194
const conversionResult = {
140
195
rules : [
141
196
{
197
+ ruleArguments : [ 0 ] ,
142
198
ruleName : "eslint-rule-a" ,
143
199
} ,
144
200
{
201
+ ruleArguments : [ 1 ] ,
145
202
ruleName : "eslint-rule-a" ,
146
203
} ,
147
204
] ,
@@ -201,7 +258,7 @@ describe("convertRules", () => {
201
258
) ;
202
259
203
260
// Assert
204
- expect ( converted ) . toEqual (
261
+ expect ( [
205
262
new Map ( [
206
263
[
207
264
"eslint-rule-a" ,
@@ -213,7 +270,17 @@ describe("convertRules", () => {
213
270
} ,
214
271
] ,
215
272
] ) ,
216
- ) ;
273
+ new Map ( [
274
+ [
275
+ "eslint-rule-a" ,
276
+ {
277
+ ruleName : "eslint-rule-a" ,
278
+ ruleSeverity : "error" ,
279
+ notices : [ "notice-1" , "notice-2" ] ,
280
+ } ,
281
+ ] ,
282
+ ] ) ,
283
+ ] ) . toContainEqual ( converted ) ;
217
284
} ) ;
218
285
219
286
it ( "merges undefined notices" , ( ) => {
@@ -243,7 +310,7 @@ describe("convertRules", () => {
243
310
) ;
244
311
245
312
// Assert
246
- expect ( converted ) . toEqual (
313
+ expect ( [
247
314
new Map ( [
248
315
[
249
316
"eslint-rule-a" ,
@@ -255,7 +322,17 @@ describe("convertRules", () => {
255
322
} ,
256
323
] ,
257
324
] ) ,
258
- ) ;
325
+ new Map ( [
326
+ [
327
+ "eslint-rule-a" ,
328
+ {
329
+ ruleName : "eslint-rule-a" ,
330
+ ruleSeverity : "error" ,
331
+ notices : [ ] ,
332
+ } ,
333
+ ] ,
334
+ ] ) ,
335
+ ] ) . toContainEqual ( converted ) ;
259
336
} ) ;
260
337
261
338
it ( "marks a new plugin when a conversion has a new plugin" , ( ) => {
0 commit comments