From 62a4a046c8f304131ad12bb0d9b9607aaa3dd7b7 Mon Sep 17 00:00:00 2001 From: Nathaniel Furniss Date: Sun, 18 Feb 2018 04:19:33 -0800 Subject: [PATCH] Fix no-capital-letters-in-routes so it deals with MemberExpressions --- lib/rules/no-capital-letters-in-routes.js | 20 ++++++++----------- .../lib/rules/no-capital-letters-in-routes.js | 16 ++++++++++----- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/rules/no-capital-letters-in-routes.js b/lib/rules/no-capital-letters-in-routes.js index d6df81fe2f..2188db2775 100644 --- a/lib/rules/no-capital-letters-in-routes.js +++ b/lib/rules/no-capital-letters-in-routes.js @@ -1,6 +1,8 @@ 'use strict'; const ember = require('../utils/ember'); +const utils = require('../utils/utils'); + //------------------------------------------------------------------------------ // Routing - No capital letters in routes //------------------------------------------------------------------------------ @@ -22,19 +24,13 @@ module.exports = { return { CallExpression(node) { - if ( - !ember.isRoute(node) || - !node.arguments[0] || - (node.arguments[0] && node.arguments[0].type === 'Identifier') - ) { - return; - } - - const routeName = node.arguments[0].value; - const hasAnyUppercaseLetter = Boolean(routeName.match('[A-Z]')); + if (ember.isRoute(node) && node.arguments[0] && utils.isLiteral(node.arguments[0])) { + const routeName = node.arguments[0].value; + const hasAnyUppercaseLetter = Boolean(routeName.match('[A-Z]')); - if (hasAnyUppercaseLetter) { - report(node); + if (hasAnyUppercaseLetter) { + report(node); + } } }, }; diff --git a/tests/lib/rules/no-capital-letters-in-routes.js b/tests/lib/rules/no-capital-letters-in-routes.js index 79c25dc160..f170ad78fc 100644 --- a/tests/lib/rules/no-capital-letters-in-routes.js +++ b/tests/lib/rules/no-capital-letters-in-routes.js @@ -11,7 +11,9 @@ const RuleTester = require('eslint').RuleTester; // Tests //------------------------------------------------------------------------------ -const eslintTester = new RuleTester(); +const eslintTester = new RuleTester({ + parserOptions: { ecmaVersion: 6, sourceType: 'module' } +}); eslintTester.run('no-capital-letters-in-routes', rule, { valid: [ @@ -20,9 +22,9 @@ eslintTester.run('no-capital-letters-in-routes', rule, { { code: ` const routeName="about"; - this.route(routeName);`, - parserOptions: { ecmaVersion: 6, sourceType: 'module' } - } + this.route(routeName); + this.route(DASH_TAB.ACTIVITY);`, + }, ], invalid: [{ @@ -35,6 +37,10 @@ eslintTester.run('no-capital-letters-in-routes', rule, { errors: [{ message: 'Unexpected capital letter in route\'s name', }] + }, { + code: 'this.route("DASH_TAB.ACTIVITY");', + errors: [{ + message: 'Unexpected capital letter in route\'s name', + }] }], - });