Skip to content

Commit c74acb4

Browse files
committed
add portal support
1 parent 984a4fb commit c74acb4

File tree

6 files changed

+52
-13
lines changed

6 files changed

+52
-13
lines changed

packages/enzyme-adapter-react-16.1/src/ReactSixteenOneAdapter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,16 @@ function toTree(vnode) {
8383
switch (node.tag) {
8484
case HostRoot: // 3
8585
return childrenToTree(node.child);
86-
case HostPortal: { // 4
87-
return childrenToTree(node.child);
88-
}
86+
case HostPortal: // 4
87+
return {
88+
nodeType: 'portal',
89+
type: Portal,
90+
props: {},
91+
key: ensureKeyOrUndefined(node.key),
92+
ref: node.ref,
93+
instance: null,
94+
rendered: childrenToTree(node.child),
95+
};
8996
case ClassComponent:
9097
return {
9198
nodeType: 'class',

packages/enzyme-adapter-react-16.2/src/ReactSixteenTwoAdapter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,16 @@ function toTree(vnode) {
8484
switch (node.tag) {
8585
case HostRoot: // 3
8686
return childrenToTree(node.child);
87-
case HostPortal: { // 4
88-
return childrenToTree(node.child);
89-
}
87+
case HostPortal: // 4
88+
return {
89+
nodeType: 'portal',
90+
type: Portal,
91+
props: {},
92+
key: ensureKeyOrUndefined(node.key),
93+
ref: node.ref,
94+
instance: null,
95+
rendered: childrenToTree(node.child),
96+
};
9097
case ClassComponent:
9198
return {
9299
nodeType: 'class',

packages/enzyme-adapter-react-16.3/src/ReactSixteenThreeAdapter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,16 @@ function toTree(vnode) {
8989
switch (node.tag) {
9090
case HostRoot: // 3
9191
return childrenToTree(node.child);
92-
case HostPortal: { // 4
93-
return childrenToTree(node.child);
94-
}
92+
case HostPortal: // 4
93+
return {
94+
nodeType: 'portal',
95+
type: Portal,
96+
props: {},
97+
key: ensureKeyOrUndefined(node.key),
98+
ref: node.ref,
99+
instance: null,
100+
rendered: childrenToTree(node.child),
101+
};
95102
case ClassComponent:
96103
return {
97104
nodeType: 'class',

packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,16 @@ function toTree(vnode) {
8989
switch (node.tag) {
9090
case HostRoot: // 3
9191
return childrenToTree(node.child);
92-
case HostPortal: { // 4
93-
return childrenToTree(node.child);
94-
}
92+
case HostPortal: // 4
93+
return {
94+
nodeType: 'portal',
95+
type: Portal,
96+
props: {},
97+
key: ensureKeyOrUndefined(node.key),
98+
ref: node.ref,
99+
instance: null,
100+
rendered: childrenToTree(node.child),
101+
};
95102
case ClassComponent:
96103
return {
97104
nodeType: 'class',

packages/enzyme-adapter-utils/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
"dependencies": {
3737
"function.prototype.name": "^1.1.0",
3838
"object.assign": "^4.1.0",
39-
"prop-types": "^15.6.2"
39+
"prop-types": "^15.6.2",
40+
"react-is": "^16.4.2"
4041
},
4142
"peerDependencies": {
4243
"react": "0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0"

packages/enzyme-adapter-utils/src/Utils.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import functionName from 'function.prototype.name';
22
import createMountWrapper from './createMountWrapper';
33
import createRenderWrapper from './createRenderWrapper';
4+
import {
5+
Portal,
6+
} from 'react-is';
47

58
export { createMountWrapper, createRenderWrapper };
69

@@ -94,6 +97,10 @@ export function displayNameOfNode(node) {
9497

9598
if (!type) return null;
9699

100+
if (type === Portal) {
101+
return 'Portal';
102+
}
103+
97104
return type.displayName || (typeof type === 'function' ? functionName(type) : type.name || type);
98105
}
99106

@@ -104,6 +111,9 @@ export function nodeTypeFromType(type) {
104111
if (type && type.prototype && type.prototype.isReactComponent) {
105112
return 'class';
106113
}
114+
if (type && type === Portal) {
115+
return 'portal';
116+
}
107117
return 'function';
108118
}
109119

0 commit comments

Comments
 (0)