Skip to content

Commit

Permalink
fix(eslint-plugin-formatjs): check intl.$t function calls (#4183)
Browse files Browse the repository at this point in the history
  • Loading branch information
apiel51 committed Sep 7, 2023
1 parent d63e778 commit 572be8b
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
15 changes: 15 additions & 0 deletions packages/eslint-plugin-formatjs/tests/enforce-description.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ defineMessage({
`intl.formatMessage({
defaultMessage: '{count, plural, one {#} other {# more}}',
description: 'asd'
})`,
`intl.$t({
defaultMessage: '{count, plural, one {#} other {# more}}',
description: 'asd'
})`,
`intl.formatMessage({
defaultMessage: '{count, plural, one {#} other {# more}}',
Expand Down Expand Up @@ -65,6 +69,17 @@ description={'asd' + 'azz'}
},
],
},
{
code: `
intl.$t({
defaultMessage: '{count, plural, one {#} other {# more}}'
})`,
errors: [
{
message: '`description` has to be specified in message descriptor',
},
],
},
{
code: `
import {defineMessages} from 'react-intl'
Expand Down
18 changes: 18 additions & 0 deletions packages/eslint-plugin-formatjs/tests/enforce-id.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ ruleTester.run('enforce-id', enforceId, {
code: `intl.formatMessage({ id: 'j9qhn+', defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'})`,
options,
},
{
code: `intl.$t({ id: 'j9qhn+', defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'})`,
options,
},
{
code: `<FormattedMessage id="/e77jM" defaultMessage="{count, plural, one {#} other {# more}}" values={{foo: 1}} />`,
options,
Expand All @@ -34,6 +38,20 @@ intl.formatMessage({ id: 'j9qhn+', defaultMessage: '{count, plural, one {#} othe
},
{
code: `
intl.$t({ id: 'foo', defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'})`,
errors: [
{
message: `"id" does not match with hash pattern [sha512:contenthash:base64:6].
Expected: j9qhn+
Actual: foo`,
},
],
options,
output: `
intl.$t({ id: 'j9qhn+', defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'})`,
},
{
code: `
intl.formatMessage({defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'})`,
errors: [
{
Expand Down
3 changes: 2 additions & 1 deletion packages/eslint-plugin-formatjs/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ export function isIntlFormatMessageCall(
node.callee.object.type === 'Identifier' &&
node.callee.object.name === 'intl' &&
node.callee.property.type === 'Identifier' &&
node.callee.property.name === 'formatMessage' &&
(node.callee.property.name === 'formatMessage' ||
node.callee.property.name === '$t') &&
node.arguments.length >= 1 &&
node.arguments[0].type === 'ObjectExpression'
)
Expand Down

0 comments on commit 572be8b

Please sign in to comment.