@@ -183,6 +183,96 @@ describe("convertRules", () => {
183
183
) ;
184
184
} ) ;
185
185
186
+ it ( "merges and deduplicates rule notices" , ( ) => {
187
+ // Arrange
188
+ const tslintRule : TSLintRuleOptions = {
189
+ ruleArguments : [ ] ,
190
+ ruleName : "tslint-rule-a" ,
191
+ ruleSeverity : "error" ,
192
+ } ;
193
+ const conversionResult = {
194
+ rules : [
195
+ {
196
+ ruleName : "eslint-rule-a" ,
197
+ notices : [ "notice-1" , "notice-2" ] ,
198
+ } ,
199
+ {
200
+ ruleName : "eslint-rule-a" ,
201
+ notices : [ "notice-1" ] ,
202
+ } ,
203
+ ] ,
204
+ } ;
205
+ const mergedArguments = [ { merged : true } ] ;
206
+ const converters = new Map ( [ [ tslintRule . ruleName , ( ) => conversionResult ] ] ) ;
207
+ const mergers = new Map ( [ [ conversionResult . rules [ 0 ] . ruleName , ( ) => mergedArguments ] ] ) ;
208
+
209
+ // Act
210
+ const { converted } = convertRules (
211
+ { converters, mergers } ,
212
+ { [ tslintRule . ruleName ] : tslintRule } ,
213
+ ) ;
214
+
215
+ // Assert
216
+ expect ( converted ) . toEqual (
217
+ new Map ( [
218
+ [
219
+ "eslint-rule-a" ,
220
+ {
221
+ ruleArguments : mergedArguments ,
222
+ ruleName : "eslint-rule-a" ,
223
+ ruleSeverity : "error" ,
224
+ notices : [ "notice-1" , "notice-2" ] ,
225
+ } ,
226
+ ] ,
227
+ ] ) ,
228
+ ) ;
229
+ } ) ;
230
+
231
+ it ( "merges undefined notices" , ( ) => {
232
+ // Arrange
233
+ const tslintRule : TSLintRuleOptions = {
234
+ ruleArguments : [ ] ,
235
+ ruleName : "tslint-rule-a" ,
236
+ ruleSeverity : "error" ,
237
+ } ;
238
+ const conversionResult = {
239
+ rules : [
240
+ {
241
+ ruleName : "eslint-rule-a" ,
242
+ notices : undefined ,
243
+ } ,
244
+ {
245
+ ruleName : "eslint-rule-a" ,
246
+ notices : undefined ,
247
+ } ,
248
+ ] ,
249
+ } ;
250
+ const mergedArguments = [ { merged : true } ] ;
251
+ const converters = new Map ( [ [ tslintRule . ruleName , ( ) => conversionResult ] ] ) ;
252
+ const mergers = new Map ( [ [ conversionResult . rules [ 0 ] . ruleName , ( ) => mergedArguments ] ] ) ;
253
+
254
+ // Act
255
+ const { converted } = convertRules (
256
+ { converters, mergers } ,
257
+ { [ tslintRule . ruleName ] : tslintRule } ,
258
+ ) ;
259
+
260
+ // Assert
261
+ expect ( converted ) . toEqual (
262
+ new Map ( [
263
+ [
264
+ "eslint-rule-a" ,
265
+ {
266
+ ruleArguments : mergedArguments ,
267
+ ruleName : "eslint-rule-a" ,
268
+ ruleSeverity : "error" ,
269
+ notices : [ ] ,
270
+ } ,
271
+ ] ,
272
+ ] ) ,
273
+ ) ;
274
+ } ) ;
275
+
186
276
it ( "marks a new plugin when a conversion has a new plugin" , ( ) => {
187
277
// Arrange
188
278
const tslintRule : TSLintRuleOptions = {
0 commit comments