From b08dbfea8c474204b47ab1452257facf6d58b0f5 Mon Sep 17 00:00:00 2001 From: Joel Marcotte Date: Fri, 5 Apr 2019 15:29:17 -0400 Subject: [PATCH 1/3] failing test --- src/__tests__/act.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/__tests__/act.js b/src/__tests__/act.js index 49729f3b..840f24f4 100644 --- a/src/__tests__/act.js +++ b/src/__tests__/act.js @@ -14,6 +14,14 @@ test('render calls useEffect immediately', () => { expect(effectCb).toHaveBeenCalledTimes(1) }) +test('findByTestId returns the element', async () => { + const ref = React.createRef() + const {findByTestId, getByTestId} = render( +
, + ) + await expect(findByTestId('foo')).resolves.toEqual(getByTestId('foo')) +}) + test('fireEvent triggers useEffect calls', () => { const effectCb = jest.fn() function Counter() { From 6cbc9828a52633f74d1b6355864f1aaf1d7da3a6 Mon Sep 17 00:00:00 2001 From: Joel Marcotte Date: Fri, 5 Apr 2019 15:32:18 -0400 Subject: [PATCH 2/3] act-compat change --- src/act-compat.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/act-compat.js b/src/act-compat.js index a87ee4d7..52826cf3 100644 --- a/src/act-compat.js +++ b/src/act-compat.js @@ -56,9 +56,10 @@ async function asyncActPolyfill(cb) { ) youHaveBeenWarned = true } - await cb() + const result = await cb() // make all effects resolve after act(() => {}) + return result } // istanbul ignore next From c6602801873a78a3e751670d1fe0cb2f2cb86f2b Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Fri, 5 Apr 2019 13:40:43 -0600 Subject: [PATCH 3/3] fix(act): ensure that the result is returned from our wrapper Closes #345 --- src/__tests__/act.js | 6 ++---- src/act-compat.js | 3 +-- src/index.js | 8 +++++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/__tests__/act.js b/src/__tests__/act.js index 840f24f4..5f3cbfb5 100644 --- a/src/__tests__/act.js +++ b/src/__tests__/act.js @@ -16,10 +16,8 @@ test('render calls useEffect immediately', () => { test('findByTestId returns the element', async () => { const ref = React.createRef() - const {findByTestId, getByTestId} = render( -
, - ) - await expect(findByTestId('foo')).resolves.toEqual(getByTestId('foo')) + const {findByTestId} = render(
) + expect(await findByTestId('foo')).toBe(ref.current) }) test('fireEvent triggers useEffect calls', () => { diff --git a/src/act-compat.js b/src/act-compat.js index 52826cf3..a87ee4d7 100644 --- a/src/act-compat.js +++ b/src/act-compat.js @@ -56,10 +56,9 @@ async function asyncActPolyfill(cb) { ) youHaveBeenWarned = true } - const result = await cb() + await cb() // make all effects resolve after act(() => {}) - return result } // istanbul ignore next diff --git a/src/index.js b/src/index.js index fe6b259b..379fccbc 100644 --- a/src/index.js +++ b/src/index.js @@ -9,7 +9,13 @@ import { import act, {asyncAct} from './act-compat' configureDTL({ - asyncWrapper: asyncAct, + asyncWrapper: async cb => { + let result + await asyncAct(async () => { + result = await cb() + }) + return result + }, }) const mountedContainers = new Set()