Skip to content

Commit 6ccf8ae

Browse files
committed
Make test passes
1 parent 7b8d2b0 commit 6ccf8ae

File tree

5 files changed

+61
-16
lines changed

5 files changed

+61
-16
lines changed

rules/enforce-store-naming-convention/enforce-store-naming-convention.js

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ const {
1414
const { createLinkToRule } = require("../../utils/create-link-to-rule");
1515
const { nodeTypeIs } = require("../../utils/node-type-is");
1616
const { traverseParentByType } = require("../../utils/traverse-parent-by-type");
17+
const {
18+
traverseRealDeclaration,
19+
} = require("../../utils/traverse-real-declaration");
20+
const { nodeName } = require("../../utils/node-name");
21+
const { nodeRange } = require("../../utils/node-range");
1722

1823
module.exports = {
1924
meta: {
@@ -47,23 +52,27 @@ module.exports = {
4752
if (parserServices?.program) {
4853
return {
4954
VariableDeclarator(node) {
50-
const isEffectorStore = nodeTypeIs.store({
51-
node,
52-
context,
53-
});
54-
55-
if (!isEffectorStore) {
56-
return;
57-
}
58-
59-
const storeName = node.id.name;
55+
const realNodes = traverseRealDeclaration(node);
6056

61-
if (namingOf.store.isInvalid({ name: storeName, context })) {
62-
reportStoreNameConventionViolation({
57+
for (const realNode of realNodes) {
58+
const isEffectorStore = nodeTypeIs.store({
59+
node: realNode,
6360
context,
64-
node,
65-
storeName,
6661
});
62+
63+
if (!isEffectorStore) {
64+
continue;
65+
}
66+
67+
const storeName = nodeName(realNode);
68+
69+
if (namingOf.store.isInvalid({ name: storeName, context })) {
70+
reportStoreNameConventionViolation({
71+
context,
72+
node: realNode,
73+
storeName,
74+
});
75+
}
6776
}
6877
},
6978
};
@@ -197,7 +206,7 @@ function reportStoreNameConventionViolation({ context, node, storeName }) {
197206
messageId: "renameStore",
198207
data: { storeName, correctedStoreName },
199208
fix(fixer) {
200-
return fixer.replaceTextRange(node.id.range, correctedStoreName);
209+
return fixer.replaceTextRange(nodeRange(node), correctedStoreName);
201210
},
202211
},
203212
],

rules/enforce-store-naming-convention/prefix/enforce-store-naming-convention-prefix.ts.test.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ ruleTester.run("enforce-store-naming-convention-prefix.ts.test", rule, {
2525

2626
invalid: [
2727
// Errors
28-
...["incorrect-store-naming.ts", "incorrect-store-after-destruction.ts"]
28+
...["incorrect-store-naming.ts"]
2929
.map(readExampleForTheRule)
3030
.map((result) => ({
3131
...result,
@@ -42,5 +42,22 @@ ruleTester.run("enforce-store-naming-convention-prefix.ts.test", rule, {
4242
},
4343
],
4444
})),
45+
...["incorrect-store-after-destruction.ts"]
46+
.map(readExampleForTheRule)
47+
.map((result) => ({
48+
...result,
49+
errors: [
50+
{
51+
messageId: "invalidName",
52+
type: "Identifier",
53+
suggestions: [
54+
{
55+
messageId: "renameStore",
56+
output: result.code.replace("justStore", "$justStore"),
57+
},
58+
],
59+
},
60+
],
61+
})),
4562
],
4663
});

utils/node-name.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function nodeName(node) {
2+
return node.id?.name ?? node.name;
3+
}
4+
5+
module.exports = { nodeName };

utils/node-range.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function nodeRange(node) {
2+
return node.id?.range ?? node.range;
3+
}
4+
5+
module.exports = { nodeRange };

utils/traverse-real-declaration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function traverseRealDeclaration(node) {
2+
if (node?.id?.type === "ArrayPattern") {
3+
return node.id.elements;
4+
}
5+
6+
return [node];
7+
}
8+
9+
module.exports = { traverseRealDeclaration };

0 commit comments

Comments
 (0)