@@ -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} ) ;
0 commit comments