1
1
import { ConversionError } from "../errors/conversionError" ;
2
2
import { convertRules } from "./convertRules" ;
3
3
import { TSLintRuleOptions , TSLintRuleSeverity } from "./types" ;
4
- import { RuleConverter } from "./converter" ;
4
+ import { RuleConverter , ConversionResult } from "./converter" ;
5
5
import { RuleMerger } from "./merger" ;
6
6
7
- function setupConversionEnvironment (
8
- config : { ruleSeverity : TSLintRuleSeverity } = { ruleSeverity : "error" } ,
9
- ) {
10
- const tslintRule = createSampleTsLintRule ( config . ruleSeverity ) ;
11
- const converters = new Map < string , RuleConverter > ( ) ;
12
- const mergers = new Map < string , RuleMerger > ( ) ;
13
-
14
- return { tslintRule, converters, mergers } ;
15
- }
16
-
17
- function createSampleTsLintRule ( ruleSeverity : TSLintRuleSeverity = "error" ) : TSLintRuleOptions {
18
- return {
19
- ruleArguments : [ ] ,
20
- ruleName : "tslint-rule-a" ,
21
- ruleSeverity,
22
- } ;
23
- }
24
-
25
7
describe ( "convertRules" , ( ) => {
26
8
it ( "doesn't marks a disabled rule as missing when its converter returns undefined" , ( ) => {
27
9
// Arrange
@@ -71,15 +53,16 @@ describe("convertRules", () => {
71
53
72
54
it ( "marks a converted rule name as converted when a conversion has rules" , ( ) => {
73
55
// Arrange
74
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
75
56
const conversionResult = {
76
57
rules : [
77
58
{
78
59
ruleName : "eslint-rule-a" ,
79
60
} ,
80
61
] ,
81
62
} ;
82
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
63
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
64
+ conversionResult,
65
+ } ) ;
83
66
84
67
// Act
85
68
const { converted } = convertRules (
@@ -103,7 +86,6 @@ describe("convertRules", () => {
103
86
104
87
it ( "reports a failure when two outputs exist for a converted rule without a merger" , ( ) => {
105
88
// Arrange
106
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
107
89
const conversionResult = {
108
90
rules : [
109
91
{
@@ -114,7 +96,9 @@ describe("convertRules", () => {
114
96
} ,
115
97
] ,
116
98
} ;
117
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
99
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
100
+ conversionResult,
101
+ } ) ;
118
102
119
103
// Act
120
104
const { failed } = convertRules (
@@ -128,7 +112,6 @@ describe("convertRules", () => {
128
112
129
113
it ( "merges rule arguments two outputs exist for a converted rule with a merger" , ( ) => {
130
114
// Arrange
131
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
132
115
const conversionResult = {
133
116
rules : [
134
117
{
@@ -139,9 +122,10 @@ describe("convertRules", () => {
139
122
} ,
140
123
] ,
141
124
} ;
142
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
143
- const mergedArguments = [ { merged : true } ] ;
144
- mergers . set ( conversionResult . rules [ 0 ] . ruleName , ( ) => mergedArguments ) ;
125
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
126
+ conversionResult,
127
+ ruleToMerge : conversionResult . rules [ 0 ] . ruleName ,
128
+ } ) ;
145
129
146
130
// Act
147
131
const { converted } = convertRules (
@@ -155,7 +139,7 @@ describe("convertRules", () => {
155
139
[
156
140
"eslint-rule-a" ,
157
141
{
158
- ruleArguments : mergedArguments ,
142
+ ruleArguments : [ { merged : true } ] ,
159
143
ruleName : "eslint-rule-a" ,
160
144
ruleSeverity : "error" ,
161
145
notices : [ ] ,
@@ -167,7 +151,6 @@ describe("convertRules", () => {
167
151
168
152
it ( "merges and deduplicates rule notices" , ( ) => {
169
153
// Arrange
170
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
171
154
const conversionResult = {
172
155
rules : [
173
156
{
@@ -180,9 +163,10 @@ describe("convertRules", () => {
180
163
} ,
181
164
] ,
182
165
} ;
183
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
184
- const mergedArguments = [ { merged : true } ] ;
185
- mergers . set ( conversionResult . rules [ 0 ] . ruleName , ( ) => mergedArguments ) ;
166
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
167
+ conversionResult,
168
+ ruleToMerge : conversionResult . rules [ 0 ] . ruleName ,
169
+ } ) ;
186
170
187
171
// Act
188
172
const { converted } = convertRules (
@@ -196,7 +180,7 @@ describe("convertRules", () => {
196
180
[
197
181
"eslint-rule-a" ,
198
182
{
199
- ruleArguments : mergedArguments ,
183
+ ruleArguments : [ { merged : true } ] ,
200
184
ruleName : "eslint-rule-a" ,
201
185
ruleSeverity : "error" ,
202
186
notices : [ "notice-1" , "notice-2" ] ,
@@ -208,7 +192,6 @@ describe("convertRules", () => {
208
192
209
193
it ( "merges undefined notices" , ( ) => {
210
194
// Arrange
211
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
212
195
const conversionResult = {
213
196
rules : [
214
197
{
@@ -221,9 +204,10 @@ describe("convertRules", () => {
221
204
} ,
222
205
] ,
223
206
} ;
224
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
225
- const mergedArguments = [ { merged : true } ] ;
226
- mergers . set ( conversionResult . rules [ 0 ] . ruleName , ( ) => mergedArguments ) ;
207
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
208
+ conversionResult,
209
+ ruleToMerge : conversionResult . rules [ 0 ] . ruleName ,
210
+ } ) ;
227
211
228
212
// Act
229
213
const { converted } = convertRules (
@@ -237,7 +221,7 @@ describe("convertRules", () => {
237
221
[
238
222
"eslint-rule-a" ,
239
223
{
240
- ruleArguments : mergedArguments ,
224
+ ruleArguments : [ { merged : true } ] ,
241
225
ruleName : "eslint-rule-a" ,
242
226
ruleSeverity : "error" ,
243
227
notices : [ ] ,
@@ -249,12 +233,13 @@ describe("convertRules", () => {
249
233
250
234
it ( "marks a new plugin when a conversion has a new plugin" , ( ) => {
251
235
// Arrange
252
- const { tslintRule, converters, mergers } = setupConversionEnvironment ( ) ;
253
236
const conversionResult = {
254
237
plugins : [ "extra-plugin" ] ,
255
238
rules : [ ] ,
256
239
} ;
257
- converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
240
+ const { tslintRule, converters, mergers } = setupConversionEnvironment ( {
241
+ conversionResult,
242
+ } ) ;
258
243
259
244
// Act
260
245
const { plugins } = convertRules (
@@ -266,3 +251,50 @@ describe("convertRules", () => {
266
251
expect ( plugins ) . toEqual ( new Set ( [ "extra-plugin" ] ) ) ;
267
252
} ) ;
268
253
} ) ;
254
+
255
+ function setupConversionEnvironment (
256
+ config : {
257
+ ruleSeverity ?: TSLintRuleSeverity ;
258
+ conversionResult ?: ConversionResult ;
259
+ ruleToMerge ?: string ;
260
+ } = { } ,
261
+ ) {
262
+ const { ruleSeverity, conversionResult, ruleToMerge } = config ;
263
+
264
+ const tslintRule = createSampleTsLintRule ( ruleSeverity ) ;
265
+ const converters = createConverters ( tslintRule , conversionResult ) ;
266
+ const mergers = createMergers ( ruleToMerge ) ;
267
+
268
+ return { tslintRule, converters, mergers } ;
269
+ }
270
+
271
+ function createSampleTsLintRule ( ruleSeverity : TSLintRuleSeverity = "error" ) : TSLintRuleOptions {
272
+ return {
273
+ ruleArguments : [ ] ,
274
+ ruleName : "tslint-rule-a" ,
275
+ ruleSeverity,
276
+ } ;
277
+ }
278
+
279
+ function createConverters (
280
+ tslintRule : TSLintRuleOptions ,
281
+ conversionResult ?: ConversionResult ,
282
+ ) : Map < string , RuleConverter > {
283
+ const converters = new Map < string , RuleConverter > ( ) ;
284
+
285
+ if ( conversionResult !== undefined ) {
286
+ converters . set ( tslintRule . ruleName , ( ) => conversionResult ) ;
287
+ }
288
+
289
+ return converters ;
290
+ }
291
+
292
+ function createMergers ( ruleToMerge ?: string ) : Map < string , RuleMerger > {
293
+ const mergers = new Map < string , RuleMerger > ( ) ;
294
+
295
+ if ( ruleToMerge !== undefined ) {
296
+ mergers . set ( ruleToMerge , ( ) => [ { merged : true } ] ) ;
297
+ }
298
+
299
+ return mergers ;
300
+ }
0 commit comments