pve-eslint/eslint/tests/lib/rules/no-useless-constructor.js
Thomas Lamprecht 456be15ea9 import eslint 7.18.0
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 16:04:55 +01:00

84 lines
3.1 KiB
JavaScript

/**
* @fileoverview Tests for no-useless-constructor rule.
* @author Alberto Rodriguez
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/no-useless-constructor");
const { RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
const error = { messageId: "noUselessConstructor", type: "MethodDefinition" };
ruleTester.run("no-useless-constructor", rule, {
valid: [
"class A { }",
"class A { constructor(){ doSomething(); } }",
"class A extends B { constructor(){} }",
"class A extends B { constructor(){ super('foo'); } }",
"class A extends B { constructor(foo, bar){ super(foo, bar, 1); } }",
"class A extends B { constructor(){ super(); doSomething(); } }",
"class A extends B { constructor(...args){ super(...args); doSomething(); } }",
"class A { dummyMethod(){ doSomething(); } }",
"class A extends B.C { constructor() { super(foo); } }",
"class A extends B.C { constructor([a, b, c]) { super(...arguments); } }",
"class A extends B.C { constructor(a = f()) { super(...arguments); } }",
"class A extends B { constructor(a, b, c) { super(a, b); } }",
"class A extends B { constructor(foo, bar){ super(foo); } }",
"class A extends B { constructor(test) { super(); } }",
"class A extends B { constructor() { foo; } }",
"class A extends B { constructor(foo, bar) { super(bar); } }",
{
code: "declare class A { constructor(options: any); }",
parser: require.resolve("../../fixtures/parsers/typescript-parsers/declare-class")
}
],
invalid: [
{
code: "class A { constructor(){} }",
errors: [error]
},
{
code: "class A { 'constructor'(){} }",
errors: [error]
},
{
code: "class A extends B { constructor() { super(); } }",
errors: [error]
},
{
code: "class A extends B { constructor(foo){ super(foo); } }",
errors: [error]
},
{
code: "class A extends B { constructor(foo, bar){ super(foo, bar); } }",
errors: [error]
},
{
code: "class A extends B { constructor(...args){ super(...args); } }",
errors: [error]
},
{
code: "class A extends B.C { constructor() { super(...arguments); } }",
errors: [error]
},
{
code: "class A extends B { constructor(a, b, ...c) { super(...arguments); } }",
errors: [error]
},
{
code: "class A extends B { constructor(a, b, ...c) { super(a, b, ...c); } }",
errors: [error]
}
]
});