From 7cb7a0679289bdd9883da3b4ace57a327e4c4ceb Mon Sep 17 00:00:00 2001 From: eddyerburgh Date: Sat, 9 Dec 2017 20:20:37 +0000 Subject: [PATCH] [Refactor] Follow ShallowWrapper contains pattern --- packages/enzyme/src/ReactWrapper.js | 27 +++++++++++---------------- packages/enzyme/src/ShallowWrapper.js | 8 ++++++-- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/enzyme/src/ReactWrapper.js b/packages/enzyme/src/ReactWrapper.js index 37d9faac3..2f07af54e 100644 --- a/packages/enzyme/src/ReactWrapper.js +++ b/packages/enzyme/src/ReactWrapper.js @@ -377,16 +377,15 @@ class ReactWrapper { * @returns {Boolean} */ contains(nodeOrNodes) { - const isArray = Array.isArray(nodeOrNodes); - let predicate; + const adapter = getAdapter(this[OPTIONS]); - if (isArray) { - const rstNodes = nodeOrNodes.map(getAdapter().elementToNode); - predicate = other => containsChildrenSubArray(nodeEqual, other, rstNodes); - } else { - const rstNode = getAdapter().elementToNode(nodeOrNodes); - predicate = other => nodeEqual(rstNode, other); - } + const predicate = Array.isArray(nodeOrNodes) + ? other => containsChildrenSubArray( + nodeEqual, + other, + nodeOrNodes.map(adapter.elementToNode), + ) + : other => nodeEqual(adapter.elementToNode(nodeOrNodes), other); return findWhereUnwrapped(this, predicate).length > 0; } @@ -408,7 +407,7 @@ class ReactWrapper { * @returns {Boolean} */ containsMatchingElement(node) { - const rstNode = getAdapter().elementToNode(node); + const rstNode = getAdapter(this[OPTIONS]).elementToNode(node); const predicate = other => nodeMatches(rstNode, other, (a, b) => a <= b); return findWhereUnwrapped(this, predicate).length > 0; } @@ -436,9 +435,7 @@ class ReactWrapper { throw new TypeError('nodes should be an Array'); } - const rstNodes = nodes.map(getAdapter().elementToNode); - - return rstNodes.every(rstNode => this.containsMatchingElement(rstNode)); + return nodes.every(node => this.containsMatchingElement(node)); } /** @@ -460,9 +457,7 @@ class ReactWrapper { * @returns {Boolean} */ containsAnyMatchingElements(nodes) { - if (!Array.isArray(nodes)) { return false; } - const rstNodes = nodes.map(getAdapter().elementToNode); - return rstNodes.some(rstNode => this.containsMatchingElement(rstNode)); + return Array.isArray(nodes) && nodes.some(node => this.containsMatchingElement(node)); } /** diff --git a/packages/enzyme/src/ShallowWrapper.js b/packages/enzyme/src/ShallowWrapper.js index b538d0a28..1dbc0db6c 100644 --- a/packages/enzyme/src/ShallowWrapper.js +++ b/packages/enzyme/src/ShallowWrapper.js @@ -476,7 +476,8 @@ class ShallowWrapper { * @returns {Boolean} */ containsMatchingElement(node) { - const predicate = other => nodeMatches(node, other, (a, b) => a <= b); + const rstNode = getAdapter().elementToNode(node); + const predicate = other => nodeMatches(rstNode, other, (a, b) => a <= b); return findWhereUnwrapped(this, predicate).length > 0; } @@ -564,7 +565,10 @@ class ShallowWrapper { * @returns {Boolean} */ matchesElement(node) { - return this.single('matchesElement', () => nodeMatches(node, this.getNodeInternal(), (a, b) => a <= b)); + return this.single('matchesElement', () => { + const rstNode = getAdapter().elementToNode(node); + return nodeMatches(rstNode, this.getNodeInternal(), (a, b) => a <= b); + }); } /**