mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
 * 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('<template><p>{{ i18n.ts.foo.bar }}</p></template>'),
 | 
						|
      testCaseVue('<template><I18n :src="i18n.ts.foo.baz"/></template>'),
 | 
						|
      // 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('<template><p>{{ i18n.ts.not }}</p></template>', 1),
 | 
						|
      testCaseVue('<template><I18n :src="i18n.ts.not"/></template>', 1),
 | 
						|
    ],
 | 
						|
  },
 | 
						|
);
 |