pve-eslint/eslint/tests/lib/rules/newline-per-chained-call.js
Thomas Lamprecht 609c276fc2 import 8.3.0 source
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-12-01 13:39:06 +01:00

413 lines
13 KiB
JavaScript

/**
* @fileoverview Tests for newline-per-chained-call rule.
* @author Rajendra Patil
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/newline-per-chained-call"),
{ RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester();
ruleTester.run("newline-per-chained-call", rule, {
valid: ["_\n.chain({})\n.map(foo)\n.filter(bar)\n.value();", "a.b.c.d.e.f", "a()\n.b()\n.c\n.e", "var a = m1.m2(); var b = m1.m2();\nvar c = m1.m2()", "var a = m1()\n.m2();", "var a = m1();", "a()\n.b().c.e.d()", "a().b().c.e.d()", "a.b.c.e.d()", "var a = window\n.location\n.href\n.match(/(^[^#]*)/)[0];", "var a = window['location']\n.href\n.match(/(^[^#]*)/)[0];", "var a = window['location'].href.match(/(^[^#]*)/)[0];", {
code: "var a = m1().m2.m3();",
options: [{
ignoreChainWithDepth: 3
}]
}, {
code: "var a = m1().m2.m3().m4.m5().m6.m7().m8;",
options: [{
ignoreChainWithDepth: 8
}]
}],
invalid: [{
code: "_\n.chain({}).map(foo).filter(bar).value();",
output: "_\n.chain({}).map(foo)\n.filter(bar)\n.value();",
errors: [{
messageId: "expected",
data: { callee: ".filter" },
line: 2,
column: 20,
endLine: 2,
endColumn: 27
}, {
messageId: "expected",
data: { callee: ".value" },
line: 2,
column: 32,
endLine: 2,
endColumn: 38
}]
}, {
code: "_\n.chain({})\n.map(foo)\n.filter(bar).value();",
output: "_\n.chain({})\n.map(foo)\n.filter(bar)\n.value();",
errors: [{
messageId: "expected",
data: { callee: ".value" },
line: 4,
column: 13,
endLine: 4,
endColumn: 19
}]
}, {
code: "a().b().c().e.d()",
output: "a().b()\n.c().e.d()",
errors: [{
messageId: "expected",
data: { callee: ".c" },
line: 1,
column: 8,
endLine: 1,
endColumn: 10
}]
}, {
code: "a.b.c().e().d()",
output: "a.b.c().e()\n.d()",
errors: [{
messageId: "expected",
data: { callee: ".d" },
line: 1,
column: 12,
endLine: 1,
endColumn: 14
}]
}, {
code: "_.chain({}).map(a).value(); ",
output: "_.chain({}).map(a)\n.value(); ",
errors: [{
messageId: "expected",
data: { callee: ".value" },
line: 1,
column: 19,
endLine: 1,
endColumn: 25
}]
}, {
code: "var a = m1.m2();\n var b = m1.m2().m3().m4().m5();",
output: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4()\n.m5();",
errors: [{
messageId: "expected",
data: { callee: ".m4" },
line: 2,
column: 22,
endLine: 2,
endColumn: 25
}, {
messageId: "expected",
data: { callee: ".m5" },
line: 2,
column: 27,
endLine: 2,
endColumn: 30
}]
}, {
code: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4().m5();",
output: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4()\n.m5();",
errors: [{
messageId: "expected",
data: { callee: ".m5" },
line: 3,
column: 6,
endLine: 3,
endColumn: 9
}]
}, {
code: "var a = m1().m2\n.m3().m4().m5().m6().m7();",
output: "var a = m1().m2\n.m3().m4().m5()\n.m6()\n.m7();",
options: [{
ignoreChainWithDepth: 3
}],
errors: [{
messageId: "expected",
data: { callee: ".m6" },
line: 2,
column: 16,
endLine: 2,
endColumn: 19
}, {
messageId: "expected",
data: { callee: ".m7" },
line: 2,
column: 21,
endLine: 2,
endColumn: 24
}]
}, {
code: [
"http.request({",
" // Param",
" // Param",
" // Param",
"}).on('response', function(response) {",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
"}).on('error', function(error) {",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
"}).end();"
].join("\n"),
output: [
"http.request({",
" // Param",
" // Param",
" // Param",
"}).on('response', function(response) {",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
" // Do something with response.",
"})",
".on('error', function(error) {",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
" // Do something with error.",
"})",
".end();"
].join("\n"),
errors: [{
messageId: "expected",
data: { callee: ".on" },
line: 16,
column: 3,
endLine: 16,
endColumn: 6
}, {
messageId: "expected",
data: { callee: ".end" },
line: 27,
column: 3,
endLine: 27,
endColumn: 7
}]
}, {
code: [
"anObject.method1().method2()['method' + n]()[aCondition ?",
" 'method3' :",
" 'method4']()"
].join("\n"),
output: [
"anObject.method1().method2()",
"['method' + n]()",
"[aCondition ?",
" 'method3' :",
" 'method4']()"
].join("\n"),
errors: [{
messageId: "expected",
data: { callee: "['method' + n]" },
line: 1,
column: 29,
endLine: 1,
endColumn: 43
}, {
messageId: "expected",
data: { callee: "[aCondition ?" },
line: 1,
column: 45,
endLine: 3,
endColumn: 15
}]
}, {
code: "foo.bar()['foo' + \u2029 + 'bar']()",
output: "foo.bar()\n['foo' + \u2029 + 'bar']()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: "['foo' + " },
line: 1,
column: 10,
endLine: 2,
endColumn: 10
}]
}, {
code: "foo.bar()[(biz)]()",
output: "foo.bar()\n[(biz)]()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: "[biz]" },
line: 1,
column: 10,
endLine: 1,
endColumn: 17
}]
}, {
code: "(foo).bar().biz()",
output: "(foo).bar()\n.biz()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: ".biz" },
line: 1,
column: 12,
endLine: 1,
endColumn: 16
}]
}, {
code: "foo.bar(). /* comment */ biz()",
output: "foo.bar()\n. /* comment */ biz()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: ".biz" },
line: 1,
column: 10,
endLine: 1,
endColumn: 29
}]
}, {
code: "foo.bar() /* comment */ .biz()",
output: "foo.bar() /* comment */ \n.biz()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: ".biz" },
line: 1,
column: 25,
endLine: 1,
endColumn: 29
}]
}, {
code: "((foo.bar()) . baz()).quux();",
output: "((foo.bar()) \n. baz())\n.quux();",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: ".baz" },
line: 1,
column: 14,
endLine: 1,
endColumn: 19
}, {
messageId: "expected",
data: { callee: ".quux" },
line: 1,
column: 22,
endLine: 1,
endColumn: 27
}]
}, {
code: "((foo.bar()) [a + b] ()) [(c + d)]()",
output: "((foo.bar()) \n[a + b] ()) \n[(c + d)]()",
options: [{ ignoreChainWithDepth: 1 }],
errors: [{
messageId: "expected",
data: { callee: "[a + b]" },
line: 1,
column: 14,
endLine: 1,
endColumn: 21
}, {
messageId: "expected",
data: { callee: "[c + d]" },
line: 1,
column: 26,
endLine: 1,
endColumn: 35
}]
},
// Optional chaining
{
code: "obj?.foo1()?.foo2()?.foo3()",
output: "obj?.foo1()\n?.foo2()\n?.foo3()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.foo2" } },
{ messageId: "expected", data: { callee: "?.foo3" } }
]
},
{
code: "(obj?.foo1()?.foo2)()?.foo3()",
output: "(obj?.foo1()\n?.foo2)()\n?.foo3()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.foo2" } },
{ messageId: "expected", data: { callee: "?.foo3" } }
]
},
{
code: "(obj?.foo1())?.foo2()?.foo3()",
output: "(obj?.foo1())\n?.foo2()\n?.foo3()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.foo2" } },
{ messageId: "expected", data: { callee: "?.foo3" } }
]
},
{
code: "obj?.[foo1]()?.[foo2]()?.[foo3]()",
output: "obj?.[foo1]()\n?.[foo2]()\n?.[foo3]()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.[foo2]" } },
{ messageId: "expected", data: { callee: "?.[foo3]" } }
]
},
{
code: "(obj?.[foo1]()?.[foo2])()?.[foo3]()",
output: "(obj?.[foo1]()\n?.[foo2])()\n?.[foo3]()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.[foo2]" } },
{ messageId: "expected", data: { callee: "?.[foo3]" } }
]
},
{
code: "(obj?.[foo1]())?.[foo2]()?.[foo3]()",
output: "(obj?.[foo1]())\n?.[foo2]()\n?.[foo3]()",
options: [{ ignoreChainWithDepth: 1 }],
parserOptions: { ecmaVersion: 2020 },
errors: [
{ messageId: "expected", data: { callee: "?.[foo2]" } },
{ messageId: "expected", data: { callee: "?.[foo3]" } }
]
}
]
});