Skip to content

Commit badcd79

Browse files
author
Mathis Girault
committed
add rule coverage for every collection callback method
1 parent 62b1777 commit badcd79

File tree

2 files changed

+77
-7
lines changed

2 files changed

+77
-7
lines changed

eslint-plugin/lib/rules/avoid-getting-size-collection-in-loop.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ module.exports = {
3434
},
3535
create: function (context) {
3636
const SIZE_PROPERTIES = ["length", "size"]; // We only include static analysis on size and length properties at the moment
37-
const CALLBACK_METHODS = ["map", "forEach", "filter", "some", "every"];
37+
const CALLBACK_METHODS = ["filter", "find", "findIndex", "findLast", "findLastIndex", "some", "every", "flatMap", "forEach", "map", "reduce", "reduceRight", "some"];
3838

3939
/**
4040
* Checks if a node is a .length or .size property access (dot or bracket notation).

eslint-plugin/tests/lib/rules/avoid-getting-size-collection-in-loop.js

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,30 +182,100 @@ ruleTester.run("avoid-getting-size-collection-in-loop", rule, {
182182
errors: [expectedError],
183183
},
184184

185-
// 5. In callback of array methods
185+
// 5. In callback of collection methods
186186
{
187187
code: `
188-
arr.forEach(item => {
188+
arr.filter(item => {
189189
doSomething(arr.length);
190190
});
191191
`,
192192
errors: [expectedError],
193193
},
194194
{
195195
code: `
196-
arr.map(function(x) {
197-
return set.size;
196+
arr.find(item => {
197+
doSomething(arr.length);
198198
});
199199
`,
200200
errors: [expectedError],
201201
},
202202
{
203203
code: `
204-
arr.filter(x => arr.size());
204+
arr.findIndex(item => {
205+
doSomething(arr.length);
206+
});
207+
`,
208+
errors: [expectedError],
209+
},
210+
{
211+
code: `
212+
arr.findLast(item => {
213+
doSomething(arr.length);
214+
});
215+
`,
216+
errors: [expectedError],
217+
},
218+
{
219+
code: `
220+
arr.findLastIndex(item => {
221+
doSomething(arr.length);
222+
});
223+
`,
224+
errors: [expectedError],
225+
},
226+
{
227+
code: `
228+
arr.some(item => {
229+
doSomething(arr.length);
230+
});
231+
`,
232+
errors: [expectedError],
233+
},
234+
{
235+
code: `
236+
arr.every(item => {
237+
doSomething(arr.length);
238+
});
239+
`,
240+
errors: [expectedError],
241+
},
242+
{
243+
code: `
244+
arr.flatMap(item => {
245+
doSomething(arr.length);
246+
});
247+
`,
248+
errors: [expectedError],
249+
},
250+
{
251+
code: `
252+
arr.forEach(item => {
253+
doSomething(arr.length);
254+
});
255+
`,
256+
errors: [expectedError],
257+
},{
258+
code: `
259+
arr.map(item => {
260+
doSomething(arr.length);
261+
});
262+
`,
263+
errors: [expectedError],
264+
},{
265+
code: `
266+
arr.reduce(item => {
267+
doSomething(arr.length);
268+
});
269+
`,
270+
errors: [expectedError],
271+
},{
272+
code: `
273+
arr.reduceRight(item => {
274+
doSomething(arr.length);
275+
});
205276
`,
206277
errors: [expectedError],
207278
},
208-
209279
// 6. Multiple in one loop
210280
{
211281
code: `

0 commit comments

Comments
 (0)