1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 * @fileoverview Tests for camelcase rule.
8 * @author Nicholas C. Zakas
13 //------------------------------------------------------------------------------
15 //------------------------------------------------------------------------------
17 var rule = require("../rules/catapult-camelcase"),
18 RuleTester = require("../../node_runner/node_runner/node_modules/eslint/lib/testers/rule-tester");
20 //------------------------------------------------------------------------------
22 //------------------------------------------------------------------------------
24 var ruleTester = new RuleTester();
26 ruleTester.run("camelcase", rule, {
28 "firstName = \"Nicholas\"",
29 "FIRST_NAME = \"Nicholas\"",
30 "__myPrivateVariable = \"Patrick\"",
31 "myPrivateVariable_ = \"Patrick\"",
32 "function doSomething(){}",
35 "var foo = bar.baz_boom;",
36 "var foo = bar.baz_boom.something;",
37 "foo.boom_pow.qux = bar.baz_boom.something;",
38 "if (bar.baz_boom) {}",
39 "var obj = { key: foo.bar_baz };",
40 "var arr = [foo.bar_baz];",
42 "var arr = [foo.bar_baz.qux];",
43 "[foo.bar_baz.nesting]",
44 "if (foo.bar_baz === boom.bam_pow) { [foo.baz_boom] }",
45 // These tests are for Catapult-specific exceptions.
46 "opt_firstName = \"Nicholas\"",
47 "g_firstName = \"Nicholas\"",
48 "sizeInBytes_smallerIsBetter = \"Nicholas\"",
49 "sizeInBytes_biggerIsBetter = \"Nicholas\"",
51 code: "var o = {key: 1}",
52 options: [{properties: "always"}]
55 code: "var o = {bar_baz: 1}",
56 options: [{properties: "never"}]
60 options: [{properties: "never"}]
63 code: "var obj = {\n a_a: 1 \n};\n obj.a_b = 2;",
64 options: [{properties: "never"}]
67 code: "obj.foo_bar = function(){};",
68 options: [{properties: "never"}]
71 code: "var { category_id: category } = query;",
72 parserOptions: { ecmaVersion: 6 }
75 code: "var { category_id: category } = query;",
76 parserOptions: { ecmaVersion: 6 },
77 options: [{properties: "never"}]
80 code: "import { camelCased } from \"external module\";",
81 parserOptions: { ecmaVersion: 6, sourceType: "module" }
84 code: "import { no_camelcased as camelCased } from \"external-module\";",
85 parserOptions: { ecmaVersion: 6, sourceType: "module" }
88 code: "import { no_camelcased as camelCased, anoterCamelCased } from \"external-module\";",
89 parserOptions: { ecmaVersion: 6, sourceType: "module" }
94 code: "first_name = \"Nicholas\"",
97 message: "Identifier 'first_name' is not in camel case.",
103 code: "__private_first_name = \"Patrick\"",
106 message: "Identifier '__private_first_name' is not in camel case.",
112 code: "function foo_bar(){}",
115 message: "Identifier 'foo_bar' is not in camel case.",
121 code: "obj.foo_bar = function(){};",
124 message: "Identifier 'foo_bar' is not in camel case.",
130 code: "bar_baz.foo = function(){};",
133 message: "Identifier 'bar_baz' is not in camel case.",
139 code: "[foo_bar.baz]",
142 message: "Identifier 'foo_bar' is not in camel case.",
148 code: "if (foo.bar_baz === boom.bam_pow) { [foo_bar.baz] }",
151 message: "Identifier 'foo_bar' is not in camel case.",
157 code: "foo.bar_baz = boom.bam_pow",
160 message: "Identifier 'bar_baz' is not in camel case.",
166 code: "var foo = { bar_baz: boom.bam_pow }",
169 message: "Identifier 'bar_baz' is not in camel case.",
175 code: "foo.qux.boom_pow = { bar: boom.bam_pow }",
178 message: "Identifier 'boom_pow' is not in camel case.",
184 code: "var o = {bar_baz: 1}",
185 options: [{properties: "always"}],
188 message: "Identifier 'bar_baz' is not in camel case.",
194 code: "obj.a_b = 2;",
195 options: [{properties: "always"}],
198 message: "Identifier 'a_b' is not in camel case.",
204 code: "obj.a_b = 2;",
205 options: [{properties: "always"}],
208 message: "Identifier 'a_b' is not in camel case.",
214 code: "var { category_id: category_id } = query;",
215 parserOptions: { ecmaVersion: 6 },
218 message: "Identifier 'category_id' is not in camel case.",
224 code: "var { category_id } = query;",
225 parserOptions: { ecmaVersion: 6 },
228 message: "Identifier 'category_id' is not in camel case.",
234 code: "import no_camelcased from \"external-module\";",
235 parserOptions: { ecmaVersion: 6, sourceType: "module" },
238 message: "Identifier 'no_camelcased' is not in camel case.",
244 code: "import * as no_camelcased from \"external-module\";",
245 parserOptions: { ecmaVersion: 6, sourceType: "module" },
248 message: "Identifier 'no_camelcased' is not in camel case.",
254 code: "import { no_camelcased } from \"external-module\";",
255 parserOptions: { ecmaVersion: 6, sourceType: "module" },
258 message: "Identifier 'no_camelcased' is not in camel case.",
264 code: "import { no_camelcased as no_camel_cased } from \"external module\";",
265 parserOptions: { ecmaVersion: 6, sourceType: "module" },
268 message: "Identifier 'no_camel_cased' is not in camel case.",
274 code: "import { camelCased as no_camel_cased } from \"external module\";",
275 parserOptions: { ecmaVersion: 6, sourceType: "module" },
278 message: "Identifier 'no_camel_cased' is not in camel case.",
284 code: "import { camelCased, no_camelcased } from \"external-module\";",
285 parserOptions: { ecmaVersion: 6, sourceType: "module" },
288 message: "Identifier 'no_camelcased' is not in camel case.",
294 code: "import { no_camelcased as camelCased, another_no_camelcased } from \"external-module\";",
295 parserOptions: { ecmaVersion: 6, sourceType: "module" },
298 message: "Identifier 'another_no_camelcased' is not in camel case.",
304 code: "import camelCased, { no_camelcased } from \"external-module\";",
305 parserOptions: { ecmaVersion: 6, sourceType: "module" },
308 message: "Identifier 'no_camelcased' is not in camel case.",
314 code: "import no_camelcased, { another_no_camelcased as camelCased } from \"external-module\";",
315 parserOptions: { ecmaVersion: 6, sourceType: "module" },
318 message: "Identifier 'no_camelcased' is not in camel case.",