Skip to content

Commit

Permalink
refactor: cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed Oct 21, 2018
1 parent 463a671 commit 2ac472c
Showing 1 changed file with 46 additions and 48 deletions.
94 changes: 46 additions & 48 deletions rules/no-test-callback.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,60 +19,58 @@ module.exports = {

const callback = node.arguments[1];

if (callback.params.length === 1) {
const argument = callback.params[0];
context.report({
node: argument,
message: 'Illegal usage of test callback',
fix(fixer) {
const sourceCode = context.getSourceCode();
const body = callback.body;
const firstBodyToken = sourceCode.getFirstToken(body);
const lastBodyToken = sourceCode.getLastToken(body);
const tokenBeforeArgument = sourceCode.getTokenBefore(argument);
const tokenAfterArgument = sourceCode.getTokenAfter(argument);
const argumentInParens =
tokenBeforeArgument.value === '(' &&
tokenAfterArgument.value === ')';
if (callback.params.length !== 1) {
return;
}

let argumentFix = fixer.replaceText(argument, '()');
const argument = callback.params[0];
context.report({
node: argument,
message: 'Illegal usage of test callback',
fix(fixer) {
const sourceCode = context.getSourceCode();
const body = callback.body;
const firstBodyToken = sourceCode.getFirstToken(body);
const lastBodyToken = sourceCode.getLastToken(body);
const tokenBeforeArgument = sourceCode.getTokenBefore(argument);
const tokenAfterArgument = sourceCode.getTokenAfter(argument);
const argumentInParens =
tokenBeforeArgument.value === '(' &&
tokenAfterArgument.value === ')';

if (argumentInParens) {
argumentFix = fixer.remove(argument);
}
let argumentFix = fixer.replaceText(argument, '()');

let newCallback = argument.name;
if (argumentInParens) {
argumentFix = fixer.remove(argument);
}

if (argumentInParens) {
newCallback = `(${newCallback})`;
}
let newCallback = argument.name;

if (body.type === 'BlockStatement') {
let beforeReplacement = `new Promise(${newCallback} => {`;
if (callback.async) {
beforeReplacement = `await ${beforeReplacement}`;
} else {
beforeReplacement = `return ${beforeReplacement}`;
}
if (argumentInParens) {
newCallback = `(${newCallback})`;
}

return [
argumentFix,
fixer.insertTextAfter(firstBodyToken, beforeReplacement),
fixer.insertTextAfter(lastBodyToken, ')}'),
];
} else {
return [
argumentFix,
fixer.insertTextBefore(
firstBodyToken,
`new Promise(${newCallback} => `
),
fixer.insertTextAfter(lastBodyToken, ')'),
];
}
},
});
}
let beforeReplacement = `new Promise(${newCallback} => `;
let afterReplacement = ')';
let replaceBefore = true;

if (body.type === 'BlockStatement') {
const keyword = callback.async ? 'await' : 'return';

beforeReplacement = `${keyword} ${beforeReplacement}{`;
afterReplacement += '}';
replaceBefore = false;
}

return [
argumentFix,
replaceBefore
? fixer.insertTextBefore(firstBodyToken, beforeReplacement)
: fixer.insertTextAfter(firstBodyToken, beforeReplacement),
fixer.insertTextAfter(lastBodyToken, afterReplacement),
];
},
});
},
};
},
Expand Down

0 comments on commit 2ac472c

Please sign in to comment.