@@ -6,7 +6,7 @@ import { configure, shallow } from 'enzyme';
66
77import './_helpers/setupAdapters' ;
88import Adapter from './_helpers/adapter' ;
9- import { renderToString } from './_helpers/react-compat' ;
9+ import { renderToString , createContext , createPortal , forwardRef } from './_helpers/react-compat' ;
1010import { REACT013 , REACT16 } from './_helpers/version' ;
1111import { 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} ) ;
0 commit comments