// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /* eslint-disable */ /** * @fileoverview Tests for camelcase rule. * @author Nicholas C. Zakas */ 'use strict'; //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ var rule = require("../rules/catapult-camelcase"), RuleTester = require("../../node_runner/node_runner/node_modules/eslint/lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ var ruleTester = new RuleTester(); ruleTester.run("camelcase", rule, { valid: [ "firstName = \"Nicholas\"", "FIRST_NAME = \"Nicholas\"", "__myPrivateVariable = \"Patrick\"", "myPrivateVariable_ = \"Patrick\"", "function doSomething(){}", "do_something()", "foo.do_something()", "var foo = bar.baz_boom;", "var foo = bar.baz_boom.something;", "foo.boom_pow.qux = bar.baz_boom.something;", "if (bar.baz_boom) {}", "var obj = { key: foo.bar_baz };", "var arr = [foo.bar_baz];", "[foo.bar_baz]", "var arr = [foo.bar_baz.qux];", "[foo.bar_baz.nesting]", "if (foo.bar_baz === boom.bam_pow) { [foo.baz_boom] }", // These tests are for Catapult-specific exceptions. "opt_firstName = \"Nicholas\"", "g_firstName = \"Nicholas\"", "sizeInBytes_smallerIsBetter = \"Nicholas\"", "sizeInBytes_biggerIsBetter = \"Nicholas\"", { code: "var o = {key: 1}", options: [{properties: "always"}] }, { code: "var o = {bar_baz: 1}", options: [{properties: "never"}] }, { code: "obj.a_b = 2;", options: [{properties: "never"}] }, { code: "var obj = {\n a_a: 1 \n};\n obj.a_b = 2;", options: [{properties: "never"}] }, { code: "obj.foo_bar = function(){};", options: [{properties: "never"}] }, { code: "var { category_id: category } = query;", parserOptions: { ecmaVersion: 6 } }, { code: "var { category_id: category } = query;", parserOptions: { ecmaVersion: 6 }, options: [{properties: "never"}] }, { code: "import { camelCased } from \"external module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" } }, { code: "import { no_camelcased as camelCased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" } }, { code: "import { no_camelcased as camelCased, anoterCamelCased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" } } ], invalid: [ { code: "first_name = \"Nicholas\"", errors: [ { message: "Identifier 'first_name' is not in camel case.", type: "Identifier" } ] }, { code: "__private_first_name = \"Patrick\"", errors: [ { message: "Identifier '__private_first_name' is not in camel case.", type: "Identifier" } ] }, { code: "function foo_bar(){}", errors: [ { message: "Identifier 'foo_bar' is not in camel case.", type: "Identifier" } ] }, { code: "obj.foo_bar = function(){};", errors: [ { message: "Identifier 'foo_bar' is not in camel case.", type: "Identifier" } ] }, { code: "bar_baz.foo = function(){};", errors: [ { message: "Identifier 'bar_baz' is not in camel case.", type: "Identifier" } ] }, { code: "[foo_bar.baz]", errors: [ { message: "Identifier 'foo_bar' is not in camel case.", type: "Identifier" } ] }, { code: "if (foo.bar_baz === boom.bam_pow) { [foo_bar.baz] }", errors: [ { message: "Identifier 'foo_bar' is not in camel case.", type: "Identifier" } ] }, { code: "foo.bar_baz = boom.bam_pow", errors: [ { message: "Identifier 'bar_baz' is not in camel case.", type: "Identifier" } ] }, { code: "var foo = { bar_baz: boom.bam_pow }", errors: [ { message: "Identifier 'bar_baz' is not in camel case.", type: "Identifier" } ] }, { code: "foo.qux.boom_pow = { bar: boom.bam_pow }", errors: [ { message: "Identifier 'boom_pow' is not in camel case.", type: "Identifier" } ] }, { code: "var o = {bar_baz: 1}", options: [{properties: "always"}], errors: [ { message: "Identifier 'bar_baz' is not in camel case.", type: "Identifier" } ] }, { code: "obj.a_b = 2;", options: [{properties: "always"}], errors: [ { message: "Identifier 'a_b' is not in camel case.", type: "Identifier" } ] }, { code: "obj.a_b = 2;", options: [{properties: "always"}], errors: [ { message: "Identifier 'a_b' is not in camel case.", type: "Identifier" } ] }, { code: "var { category_id: category_id } = query;", parserOptions: { ecmaVersion: 6 }, errors: [ { message: "Identifier 'category_id' is not in camel case.", type: "Identifier" } ] }, { code: "var { category_id } = query;", parserOptions: { ecmaVersion: 6 }, errors: [ { message: "Identifier 'category_id' is not in camel case.", type: "Identifier" } ] }, { code: "import no_camelcased from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import * as no_camelcased from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import { no_camelcased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import { no_camelcased as no_camel_cased } from \"external module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camel_cased' is not in camel case.", type: "Identifier" } ] }, { code: "import { camelCased as no_camel_cased } from \"external module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camel_cased' is not in camel case.", type: "Identifier" } ] }, { code: "import { camelCased, no_camelcased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import { no_camelcased as camelCased, another_no_camelcased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'another_no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import camelCased, { no_camelcased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] }, { code: "import no_camelcased, { another_no_camelcased as camelCased } from \"external-module\";", parserOptions: { ecmaVersion: 6, sourceType: "module" }, errors: [ { message: "Identifier 'no_camelcased' is not in camel case.", type: "Identifier" } ] } ] });