From d1222c1789e6908e9418bdb1b218a3417dd2579c Mon Sep 17 00:00:00 2001 From: Juan Carlos Medina Date: Sun, 28 Feb 2021 11:37:17 -0800 Subject: [PATCH 1/3] fix: Improve error message when passing an Array (#892) --- src/__tests__/helpers.js | 5 +++++ src/helpers.js | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/__tests__/helpers.js b/src/__tests__/helpers.js index 8e5d436f..66732023 100644 --- a/src/__tests__/helpers.js +++ b/src/__tests__/helpers.js @@ -17,6 +17,11 @@ describe('window retrieval throws when given something other than a node', () => `"It looks like you passed a Promise object instead of a DOM node. Did you do something like \`fireEvent.click(screen.findBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`, or await the findBy query \`fireEvent.click(await screen.findBy...\`?"`, ) }) + test('Array as node', () => { + expect(() => getWindowFromNode([])).toThrowErrorMatchingInlineSnapshot( + `"It looks like you passed an Array object instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?"`, + ) + }) test('unknown as node', () => { expect(() => getWindowFromNode({})).toThrowErrorMatchingInlineSnapshot( `"Unable to find the \\"window\\" object for the given node. Please file an issue with the code that's causing you to see this error: https://github.com/testing-library/dom-testing-library/issues/new"`, diff --git a/src/helpers.js b/src/helpers.js index 176b606f..61d275c9 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -92,6 +92,10 @@ function getWindowFromNode(node) { throw new Error( `It looks like you passed a Promise object instead of a DOM node. Did you do something like \`fireEvent.click(screen.findBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`, or await the findBy query \`fireEvent.click(await screen.findBy...\`?`, ) + } else if (node instanceof Array) { + throw new Error( + `It looks like you passed an Array object instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?`, + ) } else { // The user passed something unusual to a calling function throw new Error( From fe775f46117d4382189cc754d519e911ff589ccf Mon Sep 17 00:00:00 2001 From: Juan Carlos Medina Date: Wed, 3 Mar 2021 11:46:45 -0800 Subject: [PATCH 2/3] fix: Remove redundant object qualifier --- src/__tests__/helpers.js | 2 +- src/helpers.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/__tests__/helpers.js b/src/__tests__/helpers.js index 66732023..9749a090 100644 --- a/src/__tests__/helpers.js +++ b/src/__tests__/helpers.js @@ -19,7 +19,7 @@ describe('window retrieval throws when given something other than a node', () => }) test('Array as node', () => { expect(() => getWindowFromNode([])).toThrowErrorMatchingInlineSnapshot( - `"It looks like you passed an Array object instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?"`, + `"It looks like you passed an Array instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?"`, ) }) test('unknown as node', () => { diff --git a/src/helpers.js b/src/helpers.js index 61d275c9..c34a1589 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -94,7 +94,7 @@ function getWindowFromNode(node) { ) } else if (node instanceof Array) { throw new Error( - `It looks like you passed an Array object instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?`, + `It looks like you passed an Array instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?`, ) } else { // The user passed something unusual to a calling function From b425e0c707727ddde9a6f0b819c4ead907d2c1df Mon Sep 17 00:00:00 2001 From: Juan Carlos Medina Date: Wed, 3 Mar 2021 11:51:58 -0800 Subject: [PATCH 3/3] fix: Replace `instanceof Array` with `Array.isArray` See http://web.mit.edu/jwalden/www/isArray.html --- src/helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers.js b/src/helpers.js index c34a1589..7634bf9d 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -92,7 +92,7 @@ function getWindowFromNode(node) { throw new Error( `It looks like you passed a Promise object instead of a DOM node. Did you do something like \`fireEvent.click(screen.findBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`, or await the findBy query \`fireEvent.click(await screen.findBy...\`?`, ) - } else if (node instanceof Array) { + } else if (Array.isArray(node)) { throw new Error( `It looks like you passed an Array instead of a DOM node. Did you do something like \`fireEvent.click(screen.getAllBy...\` when you meant to use a \`getBy\` query \`fireEvent.click(screen.getBy...\`?`, )