You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
569 lines
14 KiB
569 lines
14 KiB
/**
|
|
* @fileoverview Tests for camelcase rule.
|
|
* @author Nicholas C. Zakas
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
const rule = require("../../rules/camelcase"),
|
|
RuleTester = require("../RuleTester");
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Tests
|
|
//------------------------------------------------------------------------------
|
|
|
|
const ruleTester = new RuleTester();
|
|
|
|
ruleTester.run("camelcase", rule, {
|
|
valid: [
|
|
// Original test cases.
|
|
"firstName = \"Nicholas\"",
|
|
"FIRST_NAME = \"Nicholas\"",
|
|
"__myPrivateVariable = \"Patrick\"",
|
|
"myPrivateVariable_ = \"Patrick\"",
|
|
"function doSomething(){}",
|
|
"do_something()",
|
|
"new do_something",
|
|
"new 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] }",
|
|
{
|
|
code: "var o = {key: 1}",
|
|
options: [{ properties: "always" }]
|
|
},
|
|
{
|
|
code: "var o = {_leading: 1}",
|
|
options: [{ properties: "always" }]
|
|
},
|
|
{
|
|
code: "var o = {trailing_: 1}",
|
|
options: [{ properties: "always" }]
|
|
},
|
|
{
|
|
code: "var o = {bar_baz: 1}",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
{
|
|
code: "var o = {_leading: 1}",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
{
|
|
code: "var o = {trailing_: 1}",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
{
|
|
code: "obj.a_b = 2;",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
{
|
|
code: "obj._a = 2;",
|
|
options: [{ properties: "always" }]
|
|
},
|
|
{
|
|
code: "obj.a_ = 2;",
|
|
options: [{ properties: "always" }]
|
|
},
|
|
{
|
|
code: "obj._a = 2;",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
{
|
|
code: "obj.a_ = 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 } = query;",
|
|
options: [{ ignoreDestructuring: true }],
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "var { category_id: category_id } = query;",
|
|
options: [{ ignoreDestructuring: true }],
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "var { category_id = 1 } = query;",
|
|
options: [{ ignoreDestructuring: true }],
|
|
parserOptions: { ecmaVersion: 6 },
|
|
|
|
},
|
|
{
|
|
code: "var { category_id: category } = query;",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "var { _leading } = query;",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "var { trailing_ } = query;",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "import { camelCased } from \"external module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
|
},
|
|
{
|
|
code: "import { _leading } from \"external module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
|
},
|
|
{
|
|
code: "import { trailing_ } 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 _leading } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
|
},
|
|
{
|
|
code: "import { no_camelcased as trailing_ } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
|
},
|
|
{
|
|
code: "import { no_camelcased as camelCased, anoterCamelCased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
|
},
|
|
{
|
|
code: "function foo({ no_camelcased: camelCased }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ no_camelcased: _leading }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ no_camelcased: trailing_ }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ camelCased = 'default value' }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ _leading = 'default value' }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ trailing_ = 'default value' }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ camelCased }) {};",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ _leading }) {}",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
{
|
|
code: "function foo({ trailing_ }) {}",
|
|
parserOptions: { ecmaVersion: 6 }
|
|
},
|
|
|
|
// Babel-specific test cases
|
|
{
|
|
code: "var foo = bar?.a_b;",
|
|
options: [{ properties: "never" }]
|
|
},
|
|
],
|
|
invalid: [
|
|
{
|
|
code: "first_name = \"Nicholas\"",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "first_name" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "__private_first_name = \"Patrick\"",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "__private_first_name" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "function foo_bar(){}",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "foo_bar" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "obj.foo_bar = function(){};",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "foo_bar" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "bar_baz.foo = function(){};",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "bar_baz" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "[foo_bar.baz]",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "foo_bar" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "if (foo.bar_baz === boom.bam_pow) { [foo_bar.baz] }",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "foo_bar" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "foo.bar_baz = boom.bam_pow",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "bar_baz" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var foo = { bar_baz: boom.bam_pow }",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "bar_baz" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "foo.qux.boom_pow = { bar: boom.bam_pow }",
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "boom_pow" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var o = {bar_baz: 1}",
|
|
options: [{ properties: "always" }],
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "bar_baz" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "obj.a_b = 2;",
|
|
options: [{ properties: "always" }],
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "a_b" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id: category_alias } = query;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "category_alias" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id: category_alias } = query;",
|
|
options: [{ ignoreDestructuring: true }],
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "category_alias" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id: categoryId, ...other_props } = query;",
|
|
options: [{ ignoreDestructuring: true }],
|
|
parserOptions: { ecmaVersion: 2018 },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "other_props" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id } = query;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "category_id" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id: category_id } = query;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "category_id" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { category_id = 1 } = 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: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import * as no_camelcased from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import { no_camelcased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import { no_camelcased as no_camel_cased } from \"external module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camel_cased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import { camelCased as no_camel_cased } from \"external module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camel_cased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import { camelCased, no_camelcased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import { no_camelcased as camelCased, another_no_camelcased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "another_no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import camelCased, { no_camelcased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "import no_camelcased, { another_no_camelcased as camelCased } from \"external-module\";",
|
|
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
|
errors: [
|
|
{
|
|
messageId: "notCamelCase",
|
|
data: { name: "no_camelcased" },
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "function foo({ no_camelcased }) {};",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "function foo({ no_camelcased = 'default value' }) {};",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "const no_camelcased = 0; function foo({ camelcased_value = no_camelcased}) {}",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
},
|
|
{
|
|
message: "Identifier 'camelcased_value' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "const { bar: no_camelcased } = foo;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "function foo({ value_1: my_default }) {}",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'my_default' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "function foo({ isCamelcased: no_camelcased }) {};",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "var { foo: bar_baz = 1 } = quz;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'bar_baz' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
code: "const { no_camelcased = false } = bar;",
|
|
parserOptions: { ecmaVersion: 6 },
|
|
errors: [
|
|
{
|
|
message: "Identifier 'no_camelcased' is not in camel case.",
|
|
type: "Identifier"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
});
|