eslint-plugin-ava
Version:
ESLint rules for AVA
54 lines (49 loc) • 1.3 kB
JavaScript
import {visitIf} from 'enhance-visitors';
import util from '../util.js';
import createAvaRule from '../create-ava-rule.js';
const MESSAGE_ID = 'no-skip-assert';
const MESSAGE_ID_SUGGESTION = 'no-skip-assert-suggestion';
const create = context => {
const ava = createAvaRule();
return ava.merge({
MemberExpression: visitIf([
ava.isInTestFile,
ava.isInTestNode,
])(node => {
if (node.property.name === 'skip') {
const root = util.getRootNode(node);
if (util.isTestObject(root.object.name) && util.assertionMethods.has(root.property.name)) {
context.report({
node,
messageId: MESSAGE_ID,
suggest: [{
messageId: MESSAGE_ID_SUGGESTION,
fix(fixer) {
const {sourceCode} = context;
const dotToken = sourceCode.getTokenBefore(node.property);
return fixer.removeRange([dotToken.range[0], node.property.range[1]]);
},
}],
});
}
}
}),
});
};
export default {
create,
meta: {
type: 'suggestion',
docs: {
description: 'Disallow skipping assertions.',
recommended: true,
url: util.getDocsUrl(import.meta.filename),
},
hasSuggestions: true,
schema: [],
messages: {
[MESSAGE_ID]: 'No assertions should be skipped.',
[MESSAGE_ID_SUGGESTION]: 'Remove the `.skip`.',
},
},
};