ソースを参照

add no-populate rule

Yuki Takei 2 年 前
コミット
63ce6f0f2a

+ 1 - 1
apps/app/src/server/models/.eslintrc.js

@@ -7,6 +7,6 @@ module.exports = {
     'rulesdir',
   ],
   rules: {
-    'rulesdir/no-hello': 'error',
+    'rulesdir/no-populate': 'warn',
   },
 };

+ 6 - 8
apps/app/src/server/models/eslint-rules-dir/no-hello.js → apps/app/src/server/models/eslint-rules-dir/no-populate.js

@@ -14,14 +14,12 @@ module.exports = {
    */
   create: (context) => {
     return {
-      Literal(node) {
-        if (node.value === 'hello') {
-          context.report({ node, message: '"hello" is not allowed' });
-        }
-      },
-      TemplateElement(node) {
-        if (node.value.cooked === 'hello') {
-          context.report({ node, message: '"hello" is not allowed' });
+      CallExpression(node) {
+        if (node.callee.property && node.callee.property.name === 'populate') {
+          context.report({
+            node,
+            message: "The 'populate' method should not be called in model modules.",
+          });
         }
       },
     };

+ 0 - 24
apps/app/src/server/models/eslint-rules-dir/test/no-hello.spec.ts

@@ -1,24 +0,0 @@
-import { RuleTester } from 'eslint';
-import { test } from 'vitest';
-
-import noHello from '../no-hello';
-
-const ruleTester = new RuleTester({
-  parserOptions: {
-    ecmaVersion: 2015,
-  },
-});
-
-test('test no-hello', () => {
-  ruleTester.run('no-hello', noHello, {
-    valid: [
-      { code: 'const x = "goodbye"' },
-      { code: 'const x = `goodbye`' },
-    ],
-    invalid: [
-      { code: 'const x = "hello"', errors: [{ message: '"hello" is not allowed' }] },
-      // eslint-disable-next-line no-template-curly-in-string
-      { code: 'const x = `hello${process.env.MESSAGE}`', errors: [{ message: '"hello" is not allowed' }] },
-    ],
-  });
-});

+ 24 - 0
apps/app/src/server/models/eslint-rules-dir/test/no-populate.spec.ts

@@ -0,0 +1,24 @@
+import { RuleTester } from 'eslint';
+import { test } from 'vitest';
+
+import noPopulate from '../no-populate';
+
+const ruleTester = new RuleTester({
+  parserOptions: {
+    ecmaVersion: 2015,
+  },
+});
+
+test('test no-populate', () => {
+  ruleTester.run('no-populate', noPopulate, {
+    valid: [
+      { code: 'Model.find();' },
+    ],
+    invalid: [
+      {
+        code: "Model.find().populate('children');",
+        errors: [{ message: "The 'populate' method should not be called in model modules." }],
+      },
+    ],
+  });
+});