1- import { RuleTester } from "eslint" ;
1+ import { RuleTester } from "eslint"
22
3- import rule from "../src/missing-make-observable.js" ;
3+ import rule from "../src/missing-make-observable.js"
44
55const tester = new RuleTester ( {
6- parser : require . resolve ( ' @typescript-eslint/parser' ) ,
7- parserOptions : { }
8- } ) ;
6+ parser : require . resolve ( " @typescript-eslint/parser" ) ,
7+ parserOptions : { }
8+ } )
99
1010const fields = [
11- '@observable o = 5' ,
12- '@observable.ref or = []' ,
13- '@observable.shallow os = []' ,
14- '@observable.deep od = {}' ,
15- '@computed get c() {}' ,
16- '@computed.struct get cs() {}' ,
17- '@computed({ equals }) get co() {}' ,
18- '@action a() {}' ,
19- '@action.bound ab() {}' ,
20- '@flow *f() {}' ,
21- '@flow.bound *fb() {}' ,
22- ] ;
23-
24- const valid1 = fields . map ( field => `
11+ "observable o = 5" ,
12+ "observable.ref or = []" ,
13+ "observable.shallow os = []" ,
14+ "observable.deep od = {}" ,
15+ "computed get c() {}" ,
16+ "computed.struct get cs() {}" ,
17+ "computed({ equals }) get co() {}" ,
18+ "action a() {}" ,
19+ "action.bound ab() {}" ,
20+ "flow *f() {}" ,
21+ "flow.bound *fb() {}"
22+ ]
23+
24+ const valid1 = fields
25+ . map (
26+ field => `
2527class C {
26- ${ field }
28+ @ ${ field }
2729
2830 constructor() {
2931 makeObservable(this)
3032 }
3133}
32- ` ) . map ( code => ( { code } ) )
34+ `
35+ )
36+ . map ( code => ( { code } ) )
3337
3438const valid2 = {
35- code : `
39+ code : `
3640class C {
3741 o = 5;
3842 get c() {};
@@ -46,131 +50,204 @@ class C {
4650`
4751}
4852
49- const valid3 = fields . map ( field => `
53+ const valid3 = fields
54+ . map (
55+ field => `
5056class C {
51- ${ field }
57+ @ ${ field }
5258
5359 constructor() {
5460 makeObservable(this, null, { name: 'foo' })
5561 }
5662}
57- ` ) . map ( code => ( { code } ) )
63+ `
64+ )
65+ . map ( code => ( { code } ) )
5866
59- const valid4 = fields . map ( field => `
67+ const valid4 = fields
68+ . map (
69+ field => `
6070class C {
61- ${ field }
71+ @ ${ field }
6272
6373 constructor(aString: string);
6474 constructor(aNum: number);
6575 constructor(stringOrNum: string | number) {
6676 makeObservable(this, null, { name: 'foo' })
6777 }
6878}
69- ` ) . map ( code => ( { code } ) )
79+ `
80+ )
81+ . map ( code => ( { code } ) )
7082
7183const invalid1 = fields . map ( field => ( {
72- code : `
84+ code : `
7385class C {
74- ${ field }
86+ @ ${ field }
7587}
7688` ,
77- errors : [
78- { messageId : 'missingMakeObservable' } ,
79- ] ,
80- output : `
89+ errors : [ { messageId : "missingMakeObservable" } ] ,
90+ output : `
8191class C {
8292constructor() { makeObservable(this); }
83- ${ field }
93+ @ ${ field }
8494}
8595`
8696} ) )
8797
8898const invalid2 = fields . map ( field => ( {
89- code : `
99+ code : `
90100class C {
91- ${ field }
101+ @ ${ field }
92102 constructor() {}
93103}
94104` ,
95- errors : [
96- { messageId : 'missingMakeObservable' } ,
97- ] ,
98- output : `
105+ errors : [ { messageId : "missingMakeObservable" } ] ,
106+ output : `
99107class C {
100- ${ field }
108+ @ ${ field }
101109 constructor() {;makeObservable(this);}
102110}
103- ` ,
111+ `
104112} ) )
105113
106114const invalid3 = fields . map ( field => ( {
107- code : `
115+ code : `
108116class C {
109- ${ field }
117+ @ ${ field }
110118 constructor() {
111119 makeObservable({ a: 5 });
112120 }
113121}
114122` ,
115- errors : [
116- { messageId : 'missingMakeObservable' } ,
117- ] ,
118- output : `
123+ errors : [ { messageId : "missingMakeObservable" } ] ,
124+ output : `
119125class C {
120- ${ field }
126+ @ ${ field }
121127 constructor() {
122128 makeObservable({ a: 5 });
123129 ;makeObservable(this);}
124130}
125- ` ,
131+ `
126132} ) )
127133
128134const invalid4 = fields . map ( field => ( {
129- code : `
135+ code : `
130136class C {
131- ${ field }
137+ @ ${ field }
132138 constructor()
133139}
134140` ,
135- errors : [
136- { messageId : 'missingMakeObservable' } ,
137- ] ,
138- output : `
141+ errors : [ { messageId : "missingMakeObservable" } ] ,
142+ output : `
139143class C {
140- ${ field }
144+ @ ${ field }
141145 constructor() { makeObservable(this); }
142146}
143- ` ,
147+ `
144148} ) )
145149
146-
147150const invalid5 = fields . map ( field => ( {
148- code : `
151+ code : `
149152class C {
150- ${ field }
153+ @ ${ field }
151154 constructor() {
152155 makeObservable(this, { o: observable.ref });
153156 }
154157}
155158` ,
156- errors : [
157- { messageId : 'secondArgMustBeNullish' } ,
158- ] ,
159+ errors : [ { messageId : "secondArgMustBeNullish" } ]
160+ } ) )
161+
162+ const invalid6 = fields . map ( field => ( {
163+ code : `
164+ import * as mobx from 'mobx';
165+
166+ class C {
167+ @mobx.${ field }
168+ }
169+ ` ,
170+ errors : [ { messageId : "missingMakeObservable" } ] ,
171+ output : `
172+ import * as mobx from 'mobx';
173+
174+ class C {
175+ constructor() { mobx.makeObservable(this); }
176+ @mobx.${ field }
177+ }
178+ `
179+ } ) )
180+
181+ const invalid7 = fields . map ( field => ( {
182+ code : `
183+ import { foo } from 'mobx';
184+
185+ class C {
186+ @${ field }
187+ }
188+ ` ,
189+ errors : [ { messageId : "missingMakeObservable" } ] ,
190+ output : `
191+ import { foo, makeObservable } from 'mobx';
192+
193+ class C {
194+ constructor() { makeObservable(this); }
195+ @${ field }
196+ }
197+ `
159198} ) )
160199
200+ const invalid8 = fields . map ( field => ( {
201+ code : `
202+ import { foo } from 'mobx';
203+ import * as mobx from 'mobx';
204+
205+ class C {
206+ @mobx.${ field }
207+ }
208+ ` ,
209+ errors : [ { messageId : "missingMakeObservable" } ] ,
210+ output : `
211+ import { foo } from 'mobx';
212+ import * as mobx from 'mobx';
213+
214+ class C {
215+ constructor() { mobx.makeObservable(this); }
216+ @mobx.${ field }
217+ }
218+ `
219+ } ) )
220+
221+ const invalid9 = fields . map ( field => ( {
222+ code : `
223+ import { makeObservable as makeBanana } from 'mobx';
224+
225+ class C {
226+ @${ field }
227+ }
228+ ` ,
229+ errors : [ { messageId : "missingMakeObservable" } ] ,
230+ output : `
231+ import { makeObservable as makeBanana } from 'mobx';
232+
233+ class C {
234+ constructor() { makeBanana(this); }
235+ @${ field }
236+ }
237+ `
238+ } ) )
161239
162240tester . run ( "missing-make-observable" , rule , {
163- valid : [
164- ...valid1 ,
165- valid2 ,
166- ...valid3 ,
167- ...valid4 ,
168- ] ,
169- invalid : [
170- ...invalid1 ,
171- ...invalid2 ,
172- ...invalid3 ,
173- ...invalid4 ,
174- ...invalid5 ,
175- ] ,
176- } ) ;
241+ valid : [ ...valid1 , valid2 , ...valid3 , ...valid4 ] ,
242+ invalid : [
243+ ...invalid1 ,
244+ ...invalid2 ,
245+ ...invalid3 ,
246+ ...invalid4 ,
247+ ...invalid5 ,
248+ ...invalid6 ,
249+ ...invalid7 ,
250+ ...invalid8 ,
251+ ...invalid9
252+ ]
253+ } )
0 commit comments