/
prefer-replace-all.js
69 lines (64 loc) · 2.02 KB
/
prefer-replace-all.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import test from 'ava';
import avaRuleTester from 'eslint-ava-rule-tester';
const rule = require('../rules/prefer-replace-all');
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = avaRuleTester(test, {
env: {
es6: true
}
});
const error = {
ruleId: 'prefer-replace-all',
message: 'Use replaceAll method of string.'
};
ruleTester.run('prefer-replace-all', rule, {
valid: [
'str.replace(/No global flag/,"123")',
'str.replace(/[abc]/g,"123")',
'str.replace(/abc?/g,"123")',
'str.replace(/Non-literal characters .*/g, "something");',
'str.replace(/Other non-literal \\W/g, "something");',
'str.replace(/Extra flags/gi, "something");',
'str.replace("Not a regex expression", "something")',
'str.foo(/Wrong method name/g, "something");'
],
invalid: [
{
code: 'str.replace(/This has no special regex symbols/g, \'something\')',
output: 'str.replaceAll(\'This has no special regex symbols\', \'something\')',
errors: [error]
},
{
code: 'str.replace(/\\(It also checks for escaped regex symbols\\)/g,\'something\')',
output: 'str.replaceAll(\'\\(It also checks for escaped regex symbols\\)\', \'something\')',
errors: [error]
},
{
code: 'str.replace(/a\\\\bc\\?/g,\'123\')',
output: 'str.replaceAll(\'a\\\\bc\\?\', \'123\')',
errors: [error]
},
{
code: 'console.log(str.replace(/a\\\\bc\\?/g,\'123\'))',
output: 'console.log(str.replaceAll(\'a\\\\bc\\?\', \'123\'))',
errors: [error]
},
{
code: 'str.replace(/"doubleQuotes"/g,\'1"2"3\')',
output: 'str.replaceAll(\'"doubleQuotes"\', \'1"2"3\')',
errors: [error]
},
{
code: 'str.replace(/\'singleQuotes\'/g,"1\'2\'3")',
output: 'str.replaceAll(\'\\\'singleQuotes\\\'\', \'1\\\'2\\\'3\')',
errors: [error]
},
{
code: 'str.replace(/searchPattern/g,\'\\\'escapedQuotes\\\'\')',
output: 'str.replaceAll(\'searchPattern\', \'\\\'escapedQuotes\\\'\')',
errors: [error]
}
]
});