Skip to content

Commit e9e63a2

Browse files
committed
add tests
1 parent c8826a7 commit e9e63a2

File tree

4 files changed

+71
-4
lines changed

4 files changed

+71
-4
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ class ReactSixteenAdapter extends EnzymeAdapter {
359359
case Fragment: return 'Fragment';
360360
case StrictMode: return 'StrictMode';
361361
case Profiler: return 'Profiler';
362+
case Portal: return 'Portal';
362363

363364
default: {
364365
const $$typeofType = type && type.$$typeof;
@@ -370,7 +371,6 @@ class ReactSixteenAdapter extends EnzymeAdapter {
370371
const name = type.render.displayName || functionName(type.render);
371372
return name ? `ForwardRef(${name})` : 'ForwardRef';
372373
}
373-
case Portal: return 'Portal';
374374
default: return displayNameOfNode(node);
375375
}
376376
}

packages/enzyme-test-suite/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@
5050
"eslint-plugin-jsx-a11y": "^6.1.0",
5151
"eslint-plugin-react": "^7.10.0"
5252
}
53-
}
53+
}

packages/enzyme-test-suite/test/Adapter-spec.jsx

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { configure, shallow } from 'enzyme';
66

77
import './_helpers/setupAdapters';
88
import Adapter from './_helpers/adapter';
9-
import { renderToString } from './_helpers/react-compat';
9+
import { renderToString, createContext, createPortal, forwardRef } from './_helpers/react-compat';
1010
import { REACT013, REACT16 } from './_helpers/version';
1111
import { itIf, describeWithDOM } from './_helpers';
1212

@@ -801,4 +801,69 @@ describe('Adapter', () => {
801801
},
802802
}));
803803
});
804+
805+
it.only('should determine valid element types', () => {
806+
const renderer = adapter.createRenderer({ mode: 'shallow' });
807+
808+
class Component extends React.Component {
809+
render() { return null }
810+
}
811+
const ArrowFunction = () => null
812+
813+
expect(adapter.isValidElementType('div')).to.equal(true);
814+
expect(adapter.isValidElementType(Component)).to.equal(true);
815+
expect(adapter.isValidElementType(ArrowFunction )).to.equal(true);
816+
817+
if (createPortal) {
818+
expect(adapter.isValidElementType(createPortal(<div />, { nodeType: 1 }))).to.equal(false);
819+
}
820+
821+
if (createContext) {
822+
const Context = createContext({ })
823+
expect(adapter.isValidElementType(Context.Consumer)).to.equal(true);
824+
expect(adapter.isValidElementType(Context.Provider)).to.equal(true);
825+
}
826+
827+
if (forwardRef) {
828+
expect(adapter.isValidElementType(forwardRef(() => null))).to.equal(true);
829+
}
830+
});
831+
832+
it('should provide node displayNames', () => {
833+
const getDisplayName = el =>
834+
adapter.displayNameOfNode(adapter.elementToNode(el))
835+
836+
class Component extends React.Component {
837+
render() { return null }
838+
}
839+
class Something extends React.Component {
840+
render() { return null }
841+
}
842+
Something.displayName = 'MyComponent'
843+
844+
const ArrowFunction = () => null
845+
846+
expect(getDisplayName(<div/>)).to.equal('div');
847+
expect(getDisplayName(<Component />)).to.equal('Component');
848+
expect(getDisplayName(<Something />)).to.equal('MyComponent');
849+
expect(getDisplayName(<ArrowFunction />)).to.equal('ArrowFunction');
850+
851+
if (createPortal) {
852+
expect(getDisplayName(createPortal(<div />, { nodeType: 1 }))).to.equal('Portal');
853+
}
854+
855+
if (createContext) {
856+
const Context = createContext({ })
857+
expect(getDisplayName(<Context.Consumer />)).to.equal('ContextConsumer');
858+
expect(getDisplayName(<Context.Provider />)).to.equal('ContextProvider');
859+
}
860+
861+
if (forwardRef) {
862+
const ForwaredRef = forwardRef(() => null);
863+
const NamedForwardedRef = forwardRef(function Named() { return null });
864+
865+
expect(getDisplayName(<ForwaredRef />)).to.equal('forwardRef');
866+
expect(getDisplayName(<NamedForwardedRef />)).to.equal('forwardRef(Named)');
867+
}
868+
});
804869
});

packages/enzyme-test-suite/test/_helpers/react-compat.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ let createClass;
1010
let renderToString;
1111
let createPortal;
1212
let createContext;
13+
let forwardRef;
1314

1415
if (is('>=15.5 || ^16.0.0-alpha || ^16.3.0-alpha')) {
1516
// eslint-disable-next-line import/no-extraneous-dependencies
@@ -32,9 +33,10 @@ if (is('^16.0.0-alpha || ^16.3.0-alpha')) {
3233
}
3334

3435
if (is('^16.3.0-0')) {
35-
({ createContext } = require('react'));
36+
({ createContext, forwardRef } = require('react'));
3637
} else {
3738
createContext = null;
39+
forwardRef = null;
3840
}
3941

4042
export {

0 commit comments

Comments
 (0)