@kfed/eslint-plugin-i18n
Version:
Plugin for eslint, that should reduce (for me) monkey job on implementing i18n for Contentmart
103 lines (98 loc) • 3.69 kB
JavaScript
const rule = require('../../../lib/rules/translate-children-literals');
const RuleTester = require('eslint').RuleTester;
const parserOptions = {
sourceType: 'module',
ecmaFeatures: {
jsx: true
}
};
// const missingCurlyMessage = 'Need to wrap this literal in a JSX expression.';
const missingTranslationMessage = 'Need to translate this literal.';
// ------------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------------
const ruleTester = new RuleTester({parserOptions});
ruleTester.run('translate-children-literals', rule, {
valid: [
{
code: '<App><Component /></App>'
},
{
code: `<Component>
<FormattedMessage id="id" defaultMessage="translated message" description="description" />
</Component>`
},
{
code: `<Component>
<FormattedMessage id="id" defaultMessage="translated message" description="description" />
</Component>`
},
{
code: `<Component prop="some value">
<FormattedMessage
id="id"
defaultMessage="translated message"
description="description"
/>
</Component>`
},
{
code: '<Component>{"should be as is"}</Component>'
},
{
code: `
<div className="controlGroup">
<label htmlFor="">
<FormattedMessage id="label" defaultMessage="Name"/>
<Tooltip>
<FormattedMessage
id="tooltip"
defaultMessage="Please enter alphabets A-z, numbers 0-9, alphanumeric (combination of A-z & 0-9) or special characters (. , _ , -, ", ’)"
/>
</Tooltip>
</label>
<Input
name="profile.first_name"
value={value}
tabIndex="2"
/>
<ErrorBlock error={errors} />
</div>
`
}
],
invalid: [
{
code: '<div>"Quoted untranslated text"</div>',
output: '<div><FormattedMessage id="uuid" defaultMessage={"\\"Quoted untranslated text\\""} description="" /></div>',
// options: [],
errors: [{message: missingTranslationMessage}]
},
{
code: '<div>Untranslated text</div>',
output: '<div><FormattedMessage id="uuid" defaultMessage={"Untranslated text"} description="" /></div>',
// options: [],
errors: [{message: missingTranslationMessage}]
},
{
code: `<div>
Untranslated text
</div>`,
output: '<div><FormattedMessage id="uuid" defaultMessage={"Untranslated text"} description="" /></div>',
// options: [],
errors: [{message: missingTranslationMessage}]
},
{
code: '<div className="should-not-trigger-rule">Untranslated text</div>',
output: '<div className="should-not-trigger-rule"><FormattedMessage id="uuid" defaultMessage={"Untranslated text"} description="" /></div>',
// options: [],
errors: [{message: missingTranslationMessage}]
},
{
code: '<div><div>Untranslated text</div></div>',
output: '<div><div><FormattedMessage id="uuid" defaultMessage={"Untranslated text"} description="" /></div></div>',
// options: [],
errors: [{message: missingTranslationMessage}]
}
]
});