eslint-plugin-green
Version:
ESLint plugin for evaluating and promoting green coding practices
72 lines (66 loc) • 2.26 kB
text/typescript
import { Linter } from 'eslint';
import plugin from '../index';
const linter = new Linter();
describe('eslint-plugin-green', () => {
const parserOptions: Linter.ParserOptions = {
ecmaVersion: 2018 as const,
sourceType: 'module' as const,
};
beforeEach(() => {
linter.defineRule('green/no-inefficient-loops', plugin.rules['no-inefficient-loops']);
linter.defineRule('green/prefer-array-methods', plugin.rules['prefer-array-methods']);
linter.defineRule('green/optimize-dom-operations', plugin.rules['optimize-dom-operations']);
});
describe('no-inefficient-loops', () => {
it('should report inefficient loops', () => {
const code = `
const result = [];
for (let i = 0; i < array.length; i++) {
result[i] = array[i] * 2;
}
`;
const messages = linter.verify(code, {
rules: {
'green/no-inefficient-loops': 'error'
},
parserOptions
});
expect(messages.length).toBeGreaterThan(0);
expect(messages[0].ruleId).toBe('green/no-inefficient-loops');
});
});
describe('prefer-array-methods', () => {
it('should report inefficient array operations', () => {
const code = `
const newArray = [];
newArray.push(...items);
`;
const messages = linter.verify(code, {
rules: {
'green/prefer-array-methods': 'error'
},
parserOptions
});
expect(messages.length).toBeGreaterThan(0);
expect(messages[0].ruleId).toBe('green/prefer-array-methods');
});
});
describe('optimize-dom-operations', () => {
it('should report inefficient DOM operations', () => {
const code = `
function updateElement() {
document.getElementById('myElement').style.display = 'none';
document.getElementById('myElement').style.color = 'red';
}
`;
const messages = linter.verify(code, {
rules: {
'green/optimize-dom-operations': 'error'
},
parserOptions
});
expect(messages.length).toBeGreaterThan(0);
expect(messages[0].ruleId).toBe('green/optimize-dom-operations');
});
});
});