@@ -39,17 +39,19 @@ describe('ReactIs', () => {
3939 }
4040
4141 const FunctionComponent = ( ) => React . createElement ( 'div' ) ;
42-
4342 const ForwardRefComponent = React . forwardRef ( ( props , ref ) =>
4443 React . createElement ( Component , { forwardedRef : ref , ...props } ) ,
4544 ) ;
46-
45+ const LazyComponent = React . lazy ( ( ) => Component ) ;
46+ const MemoComponent = React . memo ( Component ) ;
4747 const Context = React . createContext ( false ) ;
4848
4949 expect ( ReactIs . isValidElementType ( 'div' ) ) . toEqual ( true ) ;
5050 expect ( ReactIs . isValidElementType ( Component ) ) . toEqual ( true ) ;
5151 expect ( ReactIs . isValidElementType ( FunctionComponent ) ) . toEqual ( true ) ;
5252 expect ( ReactIs . isValidElementType ( ForwardRefComponent ) ) . toEqual ( true ) ;
53+ expect ( ReactIs . isValidElementType ( LazyComponent ) ) . toEqual ( true ) ;
54+ expect ( ReactIs . isValidElementType ( MemoComponent ) ) . toEqual ( true ) ;
5355 expect ( ReactIs . isValidElementType ( Context . Provider ) ) . toEqual ( true ) ;
5456 expect ( ReactIs . isValidElementType ( Context . Consumer ) ) . toEqual ( true ) ;
5557 expect ( ReactIs . isValidElementType ( React . createFactory ( 'div' ) ) ) . toEqual (
@@ -60,6 +62,7 @@ describe('ReactIs', () => {
6062 true ,
6163 ) ;
6264 expect ( ReactIs . isValidElementType ( React . StrictMode ) ) . toEqual ( true ) ;
65+ expect ( ReactIs . isValidElementType ( React . Suspense ) ) . toEqual ( true ) ;
6366
6467 expect ( ReactIs . isValidElementType ( true ) ) . toEqual ( false ) ;
6568 expect ( ReactIs . isValidElementType ( 123 ) ) . toEqual ( false ) ;
@@ -116,6 +119,7 @@ describe('ReactIs', () => {
116119 expect ( ReactIs . isElement ( < React . Fragment /> ) ) . toBe ( true ) ;
117120 expect ( ReactIs . isElement ( < React . unstable_ConcurrentMode /> ) ) . toBe ( true ) ;
118121 expect ( ReactIs . isElement ( < React . StrictMode /> ) ) . toBe ( true ) ;
122+ expect ( ReactIs . isElement ( < React . Suspense /> ) ) . toBe ( true ) ;
119123 } ) ;
120124
121125 it ( 'should identify ref forwarding component' , ( ) => {
@@ -152,6 +156,14 @@ describe('ReactIs', () => {
152156 expect ( ReactIs . isMemo ( Component ) ) . toBe ( false ) ;
153157 } ) ;
154158
159+ it ( 'should identify lazy' , ( ) => {
160+ const Component = ( ) => React . createElement ( 'div' ) ;
161+ const lazyComponent = React . lazy ( ( ) => Component ) ;
162+ expect ( ReactIs . typeOf ( lazyComponent ) ) . toBe ( ReactIs . Lazy ) ;
163+ expect ( ReactIs . isLazy ( lazyComponent ) ) . toBe ( true ) ;
164+ expect ( ReactIs . isLazy ( Component ) ) . toBe ( false ) ;
165+ } ) ;
166+
155167 it ( 'should identify strict mode' , ( ) => {
156168 expect ( ReactIs . typeOf ( < React . StrictMode /> ) ) . toBe ( ReactIs . StrictMode ) ;
157169 expect ( ReactIs . isStrictMode ( < React . StrictMode /> ) ) . toBe ( true ) ;
@@ -160,6 +172,14 @@ describe('ReactIs', () => {
160172 expect ( ReactIs . isStrictMode ( < div /> ) ) . toBe ( false ) ;
161173 } ) ;
162174
175+ it ( 'should identify suspense' , ( ) => {
176+ expect ( ReactIs . typeOf ( < React . Suspense /> ) ) . toBe ( ReactIs . Suspense ) ;
177+ expect ( ReactIs . isSuspense ( < React . Suspense /> ) ) . toBe ( true ) ;
178+ expect ( ReactIs . isSuspense ( { type : ReactIs . Suspense } ) ) . toBe ( false ) ;
179+ expect ( ReactIs . isSuspense ( 'React.Suspense' ) ) . toBe ( false ) ;
180+ expect ( ReactIs . isSuspense ( < div /> ) ) . toBe ( false ) ;
181+ } ) ;
182+
163183 it ( 'should identify profile root' , ( ) => {
164184 expect (
165185 ReactIs . typeOf ( < React . unstable_Profiler id = "foo" onRender = { jest . fn ( ) } /> ) ,
0 commit comments