Skip to content

Commit ee52ef7

Browse files
authored
Add naming-convention merger (#674)
1 parent e66d26a commit ee52ef7

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed

src/rules/mergers.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { mergeBanTypes } from "./mergers/ban-types";
22
import { mergeConsistentTypeAssertions } from "./mergers/consistent-type-assertions";
33
import { mergeIndent } from "./mergers/indent";
4+
import { mergeNamingConvention } from "./mergers/naming-convention";
45
import { mergeNoCaller } from "./mergers/no-caller";
56
import { mergeNoEval } from "./mergers/no-eval";
67
import { mergeNoMemberDelimiterStyle } from "./mergers/member-delimiter-style";
@@ -12,6 +13,7 @@ export const mergers = new Map([
1213
["@typescript-eslint/consistent-type-assertions", mergeConsistentTypeAssertions],
1314
["@typescript-eslint/indent", mergeIndent],
1415
["@typescript-eslint/member-delimiter-style", mergeNoMemberDelimiterStyle],
16+
["@typescript-eslint/naming-convention", mergeNamingConvention],
1517
["@typescript-eslint/no-unnecessary-type-assertion", mergeNoUnnecessaryTypeAssertion],
1618
["@typescript-eslint/triple-slash-reference", mergeTripleSlashReference],
1719
["no-caller", mergeNoCaller],
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { RuleMerger } from "../merger";
2+
3+
export const mergeNamingConvention: RuleMerger = (existingOptions, newOptions) => {
4+
if (existingOptions === undefined && newOptions === undefined) {
5+
return [];
6+
}
7+
8+
return [...(existingOptions ?? []), ...(newOptions ?? [])];
9+
};
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { mergeNamingConvention } from "../naming-convention";
2+
3+
describe(mergeNamingConvention, () => {
4+
test("neither options existing", () => {
5+
const result = mergeNamingConvention(undefined, undefined);
6+
7+
expect(result).toEqual([]);
8+
});
9+
10+
test("original variable name existing", () => {
11+
const result = mergeNamingConvention(
12+
[
13+
{
14+
selector: "variable",
15+
format: ["camelCase", "UPPER_CASE"],
16+
leadingUnderscore: "forbid",
17+
trailingUnderscore: "forbid",
18+
},
19+
],
20+
undefined,
21+
);
22+
23+
expect(result).toEqual([
24+
{
25+
selector: "variable",
26+
format: ["camelCase", "UPPER_CASE"],
27+
leadingUnderscore: "forbid",
28+
trailingUnderscore: "forbid",
29+
},
30+
]);
31+
});
32+
33+
test("original interface name existing", () => {
34+
const result = mergeNamingConvention(undefined, [
35+
{
36+
selector: "interface",
37+
format: ["PascalCase"],
38+
custom: {
39+
regex: "^I[A-Z]",
40+
match: false,
41+
},
42+
},
43+
]);
44+
45+
expect(result).toEqual([
46+
{
47+
selector: "interface",
48+
format: ["PascalCase"],
49+
custom: {
50+
regex: "^I[A-Z]",
51+
match: false,
52+
},
53+
},
54+
]);
55+
});
56+
57+
test("both interface and variable name existing", () => {
58+
const result = mergeNamingConvention(
59+
[
60+
{
61+
selector: "variable",
62+
format: ["camelCase", "UPPER_CASE"],
63+
leadingUnderscore: "forbid",
64+
trailingUnderscore: "forbid",
65+
},
66+
],
67+
[
68+
{
69+
selector: "interface",
70+
format: ["PascalCase"],
71+
custom: {
72+
regex: "^I[A-Z]",
73+
match: false,
74+
},
75+
},
76+
],
77+
);
78+
79+
expect(result).toEqual([
80+
{
81+
selector: "variable",
82+
format: ["camelCase", "UPPER_CASE"],
83+
leadingUnderscore: "forbid",
84+
trailingUnderscore: "forbid",
85+
},
86+
{
87+
selector: "interface",
88+
format: ["PascalCase"],
89+
custom: {
90+
regex: "^I[A-Z]",
91+
match: false,
92+
},
93+
},
94+
]);
95+
});
96+
});

0 commit comments

Comments
 (0)