Skip to content

Commit 09111e0

Browse files
G-RathSimenB
authored andcommitted
fix(no-test-callback): don't provide fix for async functions (#469)
Fixes #466
1 parent e57575c commit 09111e0

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

src/rules/__tests__/no-test-callback.test.ts

+26-8
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,38 @@ ruleTester.run('no-test-callback', rule, {
5454
},
5555
{
5656
code: 'test("something", async done => {done();})',
57-
errors: [{ messageId: 'illegalTestCallback', line: 1, column: 25 }],
58-
output:
59-
'test("something", async () => {await new Promise(done => {done();})})',
57+
errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 25 }],
6058
},
6159
{
6260
code: 'test("something", async done => done())',
63-
errors: [{ messageId: 'illegalTestCallback', line: 1, column: 25 }],
64-
output: 'test("something", async () => new Promise(done => done()))',
61+
errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 25 }],
6562
},
6663
{
6764
code: 'test("something", async function (done) {done();})',
68-
errors: [{ messageId: 'illegalTestCallback', line: 1, column: 35 }],
69-
output:
70-
'test("something", async function () {await new Promise((done) => {done();})})',
65+
errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 35 }],
66+
},
67+
{
68+
code: `
69+
test('my test', async (done) => {
70+
await myAsyncTask();
71+
expect(true).toBe(false);
72+
done();
73+
});
74+
`,
75+
errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 2, column: 30 }],
76+
},
77+
{
78+
code: `
79+
test('something', (done) => {
80+
done();
81+
});
82+
`,
83+
errors: [{ messageId: 'illegalTestCallback', line: 2, column: 26 }],
84+
output: `
85+
test('something', () => {return new Promise((done) => {
86+
done();
87+
})});
88+
`,
7189
},
7290
],
7391
});

src/rules/no-test-callback.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export default createRule({
1010
},
1111
messages: {
1212
illegalTestCallback: 'Illegal usage of test callback',
13+
useAwaitInsteadOfCallback:
14+
'Use await instead of callback in async functions',
1315
},
1416
fixable: 'code',
1517
schema: [],
@@ -31,6 +33,15 @@ export default createRule({
3133

3234
const [argument] = callback.params;
3335

36+
if (callback.async) {
37+
context.report({
38+
node: argument,
39+
messageId: 'useAwaitInsteadOfCallback',
40+
});
41+
42+
return;
43+
}
44+
3445
context.report({
3546
node: argument,
3647
messageId: 'illegalTestCallback',
@@ -84,7 +95,7 @@ export default createRule({
8495
let replaceBefore = true;
8596

8697
if (body.type === 'BlockStatement') {
87-
const keyword = callback.async ? 'await' : 'return';
98+
const keyword = 'return';
8899

89100
beforeReplacement = `${keyword} ${beforeReplacement}{`;
90101
afterReplacement += '}';

0 commit comments

Comments
 (0)