Skip to content

Commit 51cd58d

Browse files
authored
chore: enable no-attributes-during-construction (#46)
1 parent 64432bb commit 51cd58d

File tree

4 files changed

+35
-15
lines changed

4 files changed

+35
-15
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"test": "mocha"
1818
},
1919
"dependencies": {
20-
"@lwc/eslint-plugin-lwc": "~0.11.0",
20+
"@lwc/eslint-plugin-lwc": "~0.12.0",
2121
"babel-eslint": "~10.1.0",
2222
"eslint-plugin-import": "~2.22.1",
2323
"eslint-plugin-jest": "~23.8.2",

recommended.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ module.exports = {
104104
// LWC specific rules
105105
'@lwc/lwc/no-api-reassignments': 'error',
106106
'@lwc/lwc/no-async-operation': 'error',
107+
'@lwc/lwc/no-attributes-during-construction': 'error',
107108
'@lwc/lwc/no-document-query': 'error',
108109
'@lwc/lwc/no-dupe-class-members': 'error',
109110
'@lwc/lwc/no-inner-html': 'error',

test/recommended.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ describe('recommended config', () => {
3535
const report = cli.executeOnText('document.querySelectorAll("a")');
3636

3737
const { messages } = report.results[0];
38-
assert.equal(messages.length, 1);
39-
assert.equal(messages[0].ruleId, '@lwc/lwc/no-document-query');
38+
assert.strictEqual(messages.length, 1);
39+
assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-document-query');
4040
});
4141

4242
it('should forbid mixing uppercase and underscore characters in public properties', () => {
@@ -50,8 +50,8 @@ describe('recommended config', () => {
5050
`);
5151

5252
const { messages } = report.results[0];
53-
assert.equal(messages.length, 1);
54-
assert.equal(messages[0].ruleId, '@lwc/lwc/valid-api');
53+
assert.strictEqual(messages.length, 1);
54+
assert.strictEqual(messages[0].ruleId, '@lwc/lwc/valid-api');
5555
});
5656

5757
it('should suggest usage of CustomEvent over Event constructor', () => {
@@ -60,8 +60,8 @@ describe('recommended config', () => {
6060
const report = cli.executeOnText(`dispatchEvent(new Event('test'));`);
6161

6262
const { messages } = report.results[0];
63-
assert.equal(messages.length, 1);
64-
assert.equal(messages[0].ruleId, '@lwc/lwc/prefer-custom-event');
63+
assert.strictEqual(messages.length, 1);
64+
assert.strictEqual(messages[0].ruleId, '@lwc/lwc/prefer-custom-event');
6565
});
6666

6767
it('should forbid duplicate class members', () => {
@@ -72,15 +72,34 @@ describe('recommended config', () => {
7272
7373
export default class App extends LightningElement {
7474
@api foo = 1;
75-
75+
7676
set foo(value) { this._foo = value }
7777
get foo() { return this._foo; }
7878
}
7979
`);
8080

8181
const { messages } = report.results[0];
82-
assert.equal(messages.length, 2);
83-
assert.equal(messages[0].ruleId, '@lwc/lwc/no-dupe-class-members');
84-
assert.equal(messages[1].ruleId, '@lwc/lwc/no-dupe-class-members');
82+
assert.strictEqual(messages.length, 2);
83+
assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-dupe-class-members');
84+
assert.strictEqual(messages[1].ruleId, '@lwc/lwc/no-dupe-class-members');
85+
});
86+
87+
it('should prevent attributes set during construction', () => {
88+
const cli = getCliEngineWithRecommendedRules();
89+
90+
const report = cli.executeOnText(`
91+
import { LightningElement } from 'lwc';
92+
93+
export default class App extends LightningElement {
94+
constructor() {
95+
super();
96+
this.tabIndex = '-1';
97+
}
98+
}
99+
`);
100+
101+
const { messages } = report.results[0];
102+
assert.strictEqual(messages.length, 1);
103+
assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-attributes-during-construction');
85104
});
86105
});

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,10 @@
146146
minimatch "^3.0.4"
147147
strip-json-comments "^3.1.1"
148148

149-
"@lwc/eslint-plugin-lwc@~0.11.0":
150-
version "0.11.0"
151-
resolved "https://registry.yarnpkg.com/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-0.11.0.tgz#1c69cc673b9798e04e87ececb8529b93eb2215b1"
152-
integrity sha512-wJOD4XWOH91GaZfypMSKfEeMXqMfvKdsb2gSJ/9FEwJVlziKg1aagtRYJh2ln3DyEZV33tBC/p/dWzIeiwa1tg==
149+
"@lwc/eslint-plugin-lwc@~0.12.0":
150+
version "0.12.0"
151+
resolved "https://registry.yarnpkg.com/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-0.12.0.tgz#4065c2e9c72f4133f2e6dca5a87ca613b35a4e1d"
152+
integrity sha512-p8PacTcCNg+Txgu7P+sDaLKAs1S/LyKWvbBiE3lZByGkahveISX7VARt8W+bCxUTERoXzoOPDxa7uGmawEfmXQ==
153153
dependencies:
154154
minimatch "^3.0.4"
155155

0 commit comments

Comments
 (0)