import { RuleTester } from "@typescript-eslint/rule-tester"; import matchingStateVariableRule from "../rules/matching-state-variable"; const ruleTester = new RuleTester({ parser: "@typescript-eslint/parser", parserOptions: { project: "./tsconfig.json", tsconfigRootDir: __dirname, ecmaFeatures: { jsx: true, }, }, }); ruleTester.run("matching-state-variable", matchingStateVariableRule, { valid: [ { code: "const variable = useRecoilValue(variableState);", }, { code: "const variable = useRecoilScopedValue(variableScopedState);", }, { code: "const [variable, setVariable] = useRecoilState(variableScopedState);", }, { code: "const [variable, setVariable] = useRecoilScopedState(variableScopedState);", }, { code: "const [variable, setVariable] = useRecoilFamilyState(variableScopedState);", }, { code: "const [variable, setVariable] = useRecoilScopedFamilyState(variableScopedState);", }, ], invalid: [ { code: "const myValue = useRecoilValue(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const variable = useRecoilValue(variableState);", }, { code: "const myValue = useRecoilScopedValue(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const variable = useRecoilScopedValue(variableState);", }, { code: "const [myValue, setMyValue] = useRecoilState(variableState);", errors: [ { messageId: "invalidVariableName", }, { messageId: "invalidSetterName", }, ], output: "const [variable, setVariable] = useRecoilState(variableState);", }, { code: "const [myValue] = useRecoilState(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const [variable] = useRecoilState(variableState);", }, { code: "const [, setMyValue] = useRecoilState(variableState);", errors: [ { messageId: "invalidSetterName", }, ], output: "const [, setVariable] = useRecoilState(variableState);", }, { code: "const [myValue, setMyValue] = useRecoilScopedState(variableState);", errors: [ { messageId: "invalidVariableName", }, { messageId: "invalidSetterName", }, ], output: "const [variable, setVariable] = useRecoilScopedState(variableState);", }, { code: "const [myValue] = useRecoilScopedState(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const [variable] = useRecoilScopedState(variableState);", }, { code: "const [, setMyValue] = useRecoilScopedState(variableState);", errors: [ { messageId: "invalidSetterName", }, ], output: "const [, setVariable] = useRecoilScopedState(variableState);", }, { code: "const [myValue, setMyValue] = useRecoilFamilyState(variableState);", errors: [ { messageId: "invalidVariableName", }, { messageId: "invalidSetterName", }, ], output: "const [variable, setVariable] = useRecoilFamilyState(variableState);", }, { code: "const [myValue] = useRecoilFamilyState(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const [variable] = useRecoilFamilyState(variableState);", }, { code: "const [, setMyValue] = useRecoilFamilyState(variableState);", errors: [ { messageId: "invalidSetterName", }, ], output: "const [, setVariable] = useRecoilFamilyState(variableState);", }, { code: "const [myValue, setMyValue] = useRecoilScopedFamilyState(variableState);", errors: [ { messageId: "invalidVariableName", }, { messageId: "invalidSetterName", }, ], output: "const [variable, setVariable] = useRecoilScopedFamilyState(variableState);", }, { code: "const [myValue] = useRecoilScopedFamilyState(variableState);", errors: [ { messageId: "invalidVariableName", }, ], output: "const [variable] = useRecoilScopedFamilyState(variableState);", }, { code: "const [, setMyValue] = useRecoilScopedFamilyState(variableState);", errors: [ { messageId: "invalidSetterName", }, ], output: "const [, setVariable] = useRecoilScopedFamilyState(variableState);", }, ], });