From 92de268df0a63ad128c666deb55d4650aaba88d0 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 8 Nov 2019 08:38:20 +1300 Subject: [PATCH] fix(no-test-callback): don't provide fix for `async` functions --- src/rules/__tests__/no-test-callback.test.ts | 34 +++++++++++++++----- src/rules/no-test-callback.ts | 11 +++++++ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/rules/__tests__/no-test-callback.test.ts b/src/rules/__tests__/no-test-callback.test.ts index 89b91aae7..bcd1dd03b 100644 --- a/src/rules/__tests__/no-test-callback.test.ts +++ b/src/rules/__tests__/no-test-callback.test.ts @@ -54,20 +54,38 @@ ruleTester.run('no-test-callback', rule, { }, { code: 'test("something", async done => {done();})', - errors: [{ messageId: 'illegalTestCallback', line: 1, column: 25 }], - output: - 'test("something", async () => {await new Promise(done => {done();})})', + errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 25 }], }, { code: 'test("something", async done => done())', - errors: [{ messageId: 'illegalTestCallback', line: 1, column: 25 }], - output: 'test("something", async () => new Promise(done => done()))', + errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 25 }], }, { code: 'test("something", async function (done) {done();})', - errors: [{ messageId: 'illegalTestCallback', line: 1, column: 35 }], - output: - 'test("something", async function () {await new Promise((done) => {done();})})', + errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 35 }], + }, + { + code: ` + test('my test', async (done) => { + await myAsyncTask(); + expect(true).toBe(false); + done(); + }); + `, + errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 2, column: 30 }], + }, + { + code: ` + test('something', (done) => { + done(); + }); + `, + errors: [{ messageId: 'illegalTestCallback', line: 2, column: 26 }], + output: ` + test('something', () => {return new Promise((done) => { + done(); + })}); + `, }, ], }); diff --git a/src/rules/no-test-callback.ts b/src/rules/no-test-callback.ts index 9625ba1b9..3ee5e6001 100644 --- a/src/rules/no-test-callback.ts +++ b/src/rules/no-test-callback.ts @@ -10,6 +10,8 @@ export default createRule({ }, messages: { illegalTestCallback: 'Illegal usage of test callback', + useAwaitInsteadOfCallback: + 'Use await instead of callback in async functions', }, fixable: 'code', schema: [], @@ -31,6 +33,15 @@ export default createRule({ const [argument] = callback.params; + if (callback.async) { + context.report({ + node: argument, + messageId: 'useAwaitInsteadOfCallback', + }); + + return; + } + context.report({ node: argument, messageId: 'illegalTestCallback',