eslint-plugin-detect-bad-words
Version:
Detect bad/profanity words in code
129 lines (121 loc) • 2.45 kB
text/typescript
'use strict'
export {}
// eslint-disable-next-line
const rule = require('../../lib/rules/in-code')
import { RuleTester } from 'eslint'
import { buildErrorMessage } from '../../lib/util'
const parserOptions = {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
}
const settings = {
customBadWords: ['tite', 'fck'],
}
const ruleTester = new RuleTester({ parserOptions, settings })
const defaultErrors = (word: string) => [{ message: buildErrorMessage(word) }]
ruleTester.run('detect-bad-words-in-code', rule, {
valid: [
{ code: "'Awesome string'" },
{ code: '<h1> Awesome string </h1>' },
{ code: "let b = 'subtite'" },
{
code: `
<AwesomeComponent
statusCode={202}
title="My title"
/>
`,
},
{ code: "const temp = ''" },
{ code: 'class Temp {}' },
{ code: '{temp: 1}' },
],
invalid: [
// words from badwords package
{
code: "'bitch'",
errors: defaultErrors('bitch'),
},
{
code: "'BITCH'",
errors: defaultErrors('BITCH'),
},
{
code: "'Tittie5'",
errors: defaultErrors('Tittie5'),
},
{
code: "'hey BITCH'",
errors: defaultErrors('BITCH'),
},
// identifiers
{
code: "const bitch = ''",
errors: defaultErrors('bitch'),
},
{
code: 'class Bitch {}',
errors: defaultErrors('Bitch'),
},
{
code: '{ bitch: 1 }',
errors: defaultErrors('bitch'),
},
{
code: `
var bitch = {
ass: 1
};
`,
errors: [
{ message: buildErrorMessage('bitch') },
{ message: buildErrorMessage('ass') },
],
},
{
code: `
{
bitch: 1
}
`,
errors: defaultErrors('bitch'),
},
// custom bad words
{
code: "'fck'",
errors: defaultErrors('fck'),
},
{
code: "'fck?'",
errors: defaultErrors('fck'),
},
{
code: "'me fck'",
errors: defaultErrors('fck'),
},
{
code: "const a = 'tite'",
errors: defaultErrors('tite'),
},
{
code: '<div> tite </div>',
errors: defaultErrors('tite'),
},
{
code: `
<div>
hey
tite
</div>
`,
errors: defaultErrors('tite'),
},
{
code: "'me FCK'",
errors: defaultErrors('FCK'),
},
],
})