diff --git a/lib/rules/template-names.js b/lib/rules/template-names.js index dc3e5cd1fa..752da8174e 100644 --- a/lib/rules/template-names.js +++ b/lib/rules/template-names.js @@ -20,6 +20,7 @@ const NAMING_CONVENTIONS = { CAMEL: 'camel-case', PASCAL: 'pascal-case', SNAKE: 'snake-case', + UPPER_SNAKE: 'upper-snake-case', }; const isTemplateMemberExpression = node => @@ -55,6 +56,11 @@ export default context => ({ context.report(node, getErrorMessage(NAMING_CONVENTIONS.SNAKE)); } break; + case NAMING_CONVENTIONS.UPPER_SNAKE: + if (!/^[A-Z]([a-z]|[A-Z]|[0-9]|_)+$/.test(templateName)) { + context.report(node, getErrorMessage(NAMING_CONVENTIONS.UPPER_SNAKE)); + } + break; case NAMING_CONVENTIONS.CAMEL: default: if (!/^[a-z]([A-Z]|[a-z]|[0-9])+$/.test(templateName)) { diff --git a/tests/lib/rules/template-names.js b/tests/lib/rules/template-names.js index 2092c1a9ae..1d751c7df7 100644 --- a/tests/lib/rules/template-names.js +++ b/tests/lib/rules/template-names.js @@ -30,6 +30,10 @@ ruleTester.run('template-names', rule, { code: 'Template.foo_bar.helpers({})', options: ['snake-case'], }, + { + code: 'Template.Foo_bar.helpers({})', + options: ['upper-snake-case'], + }, { code: 'Template.fooBar.helpers({})', options: ['camel-case'], @@ -142,5 +146,16 @@ ruleTester.run('template-names', rule, { }, ], }, + { + code: 'Template["foo_bar"].helpers({})', + options: ['upper-snake-case'], + errors: [ + { + message: + 'Invalid template name, expected name to be in upper-snake-case', + type: 'MemberExpression', + }, + ], + }, ], });