/* * SPDX-FileCopyrightText: dakkar and other Sharkey contributors * SPDX-License-Identifier: AGPL-3.0-only */ const {RuleTester} = require("eslint"); const localeRule = require("./locale"); const locale = { foo: { bar: 'ok', baz: 'good {x}' }, top: '123' }; const ruleTester = new RuleTester({ languageOptions: { parser: require('vue-eslint-parser'), ecmaVersion: 2015, }, }); function testCase(code,errors) { return { code, errors, options: [ locale ], filename: 'test.ts' }; } function testCaseVue(code,errors) { return { code, errors, options: [ locale ], filename: 'test.vue' }; } ruleTester.run( 'sharkey-locale', localeRule, { valid: [ testCase('i18n.ts.foo.bar'), testCase('i18n.ts.top'), testCase('i18n.tsx.foo.baz({x:1})'), testCase('whatever.i18n.ts.blah.blah'), testCase('whatever.i18n.tsx.does.not.matter'), testCase('whatever(i18n.ts.foo.bar)'), testCaseVue(''), testCaseVue(''), // we don't detect the problem here, but should still accept it testCase('i18n.ts.foo["something"]'), testCase('i18n.ts.foo[something]'), ], invalid: [ testCase('i18n.ts.not', 1), testCase('i18n.tsx.deep.not', 1), testCase('i18n.tsx.deep.not({x:12})', 1), testCase('i18n.tsx.top({x:1})', 1), testCase('i18n.ts.foo.baz', 1), testCase('i18n.tsx.foo.baz', 1), testCase('i18n.tsx.foo.baz({y:2})', 2), testCaseVue('', 1), testCaseVue('', 1), ], }, );