@@ -17,21 +17,21 @@ describe("React Components test", () => {
1717 initNodeSampleProject ( projectRootPath ) ;
1818 initializeReactExtractor ( ) ;
1919 const projects = await processProjects ( projectRootPath ) ;
20- if ( projects . length !== 1 ) {
21- throw new Error ( "Processed " + projects . length + " projects. Should be 1 instead." )
20+ if ( projects . length !== 1 ) {
21+ throw new Error ( "Processed " + projects . length + " projects. Should be 1 instead." ) ;
2222 }
2323 result = projects [ 0 ] . concepts ;
2424
25- if ( ! result . get ( LCEReactComponent . conceptId ) ) {
26- throw new Error ( "Could not find React components in result data." )
25+ if ( ! result . get ( LCEReactComponent . conceptId ) ) {
26+ throw new Error ( "Could not find React components in result data." ) ;
2727 }
2828
29- for ( const concept of ( result . get ( LCEReactComponent . conceptId ) ?? [ ] ) ) {
29+ for ( const concept of result . get ( LCEReactComponent . conceptId ) ?? [ ] ) {
3030 const component : LCEReactComponent = concept as LCEReactComponent ;
31- if ( ! component . fqn . globalFqn ) {
31+ if ( ! component . fqn . globalFqn ) {
3232 throw new Error ( "React component has no globalFQN " + JSON . stringify ( component ) ) ;
3333 }
34- if ( components . has ( component . fqn . globalFqn ) ) {
34+ if ( components . has ( component . fqn . globalFqn ) ) {
3535 throw new Error ( "Two React components with same global FQN were returned: " + component . fqn . globalFqn ) ;
3636 }
3737 components . set ( component . fqn . globalFqn , component ) ;
@@ -43,7 +43,7 @@ describe("React Components test", () => {
4343 test ( "basic function component" , async ( ) => {
4444 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicFunctionComponent' ) ) ;
4545 expect ( comp ) . toBeDefined ( ) ;
46- if ( comp ) {
46+ if ( comp ) {
4747 expect ( comp . componentName ) . toBe ( "BasicFunctionComponent" ) ;
4848 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicFunctionComponent' ) ) ;
4949 expect ( comp . renderedElements ) . toHaveLength ( 0 ) ;
@@ -53,7 +53,7 @@ describe("React Components test", () => {
5353 test ( "basic arrow function component" , async ( ) => {
5454 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicArrowFunctionComponent' ) ) ;
5555 expect ( comp ) . toBeDefined ( ) ;
56- if ( comp ) {
56+ if ( comp ) {
5757 expect ( comp . componentName ) . toBe ( "BasicArrowFunctionComponent" ) ;
5858 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicArrowFunctionComponent' ) ) ;
5959 expect ( comp . renderedElements ) . toHaveLength ( 0 ) ;
@@ -63,7 +63,7 @@ describe("React Components test", () => {
6363 test ( "basic class component" , async ( ) => {
6464 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicClassComponent' ) ) ;
6565 expect ( comp ) . toBeDefined ( ) ;
66- if ( comp ) {
66+ if ( comp ) {
6767 expect ( comp . componentName ) . toBe ( "BasicClassComponent" ) ;
6868 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".BasicClassComponent' ) ) ;
6969 expect ( comp . renderedElements ) . toHaveLength ( 0 ) ;
@@ -73,27 +73,36 @@ describe("React Components test", () => {
7373 test ( "arrow function component with content" , async ( ) => {
7474 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ArrFuncComponentWithContent' ) ) ;
7575 expect ( comp ) . toBeDefined ( ) ;
76- if ( comp ) {
76+ if ( comp ) {
7777 expect ( comp . componentName ) . toBe ( "ArrFuncComponentWithContent" ) ;
7878 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ArrFuncComponentWithContent' ) ) ;
7979 expect ( comp . renderedElements ) . toHaveLength ( 3 ) ;
80- expectJSXDependency ( comp , 'h1' , 'h1' , 1 ) ;
81- expectJSXDependency ( comp , 'h2' , 'h2' , 2 ) ;
82- expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".SomeComponent' ) , 'SomeComponent' , 1 ) ;
80+ expectJSXDependency ( comp , "h1" , "h1" , 1 ) ;
81+ expectJSXDependency ( comp , "h2" , "h2" , 2 ) ;
82+ expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".SomeComponent' ) , "SomeComponent" , 1 ) ;
83+ }
84+ } ) ;
8385
86+ test ( "arrow function component with React.FC type" , async ( ) => {
87+ const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ArrFuncComponentReactFC' ) ) ;
88+ expect ( comp ) . toBeDefined ( ) ;
89+ if ( comp ) {
90+ expect ( comp . componentName ) . toBe ( "ArrFuncComponentReactFC" ) ;
91+ expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ArrFuncComponentReactFC' ) ) ;
92+ expect ( comp . renderedElements ) . toHaveLength ( 0 ) ;
8493 }
8594 } ) ;
8695
87- test ( "class function component with content" , async ( ) => {
96+ test ( "class component with content" , async ( ) => {
8897 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ClassComponentWithContent' ) ) ;
8998 expect ( comp ) . toBeDefined ( ) ;
90- if ( comp ) {
99+ if ( comp ) {
91100 expect ( comp . componentName ) . toBe ( "ClassComponentWithContent" ) ;
92101 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ClassComponentWithContent' ) ) ;
93102 expect ( comp . renderedElements ) . toHaveLength ( 3 ) ;
94- expectJSXDependency ( comp , 'h1' , 'h1' , 1 ) ;
95- expectJSXDependency ( comp , ' div' , ' div' , 1 ) ;
96- expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".SomeComponent' ) , ' SomeComponent' , 3 ) ;
103+ expectJSXDependency ( comp , "h1" , "h1" , 1 ) ;
104+ expectJSXDependency ( comp , " div" , " div" , 1 ) ;
105+ expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".SomeComponent' ) , " SomeComponent" , 3 ) ;
97106 }
98107 } ) ;
99108
@@ -102,19 +111,30 @@ describe("React Components test", () => {
102111 const comp = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ComponentWithUnnamedIndexDefaultComponent' ) ) ;
103112
104113 expect ( compDef ) . toBeDefined ( ) ;
105- if ( compDef ) {
114+ if ( compDef ) {
106115 expect ( compDef . componentName ) . toBe ( "UnnamedIndexComponent" ) ;
107116 expect ( compDef . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/components/UnnamedIndexComponent".default' ) ) ;
108117 expect ( compDef . renderedElements ) . toHaveLength ( 1 ) ;
109- expectJSXDependency ( compDef , ' div' , ' div' , 1 ) ;
118+ expectJSXDependency ( compDef , " div" , " div" , 1 ) ;
110119 }
111120 expect ( comp ) . toBeDefined ( ) ;
112- if ( comp ) {
121+ if ( comp ) {
113122 expect ( comp . componentName ) . toBe ( "ComponentWithUnnamedIndexDefaultComponent" ) ;
114123 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ComponentWithUnnamedIndexDefaultComponent' ) ) ;
115124 expect ( comp . renderedElements ) . toHaveLength ( 1 ) ;
116- expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/components/UnnamedIndexComponent".default' ) , 'UnnamedIndexComponent' , 1 ) ;
117- expectDependency ( projectRootPath , dependencies , '"./src/main.tsx".ComponentWithUnnamedIndexDefaultComponent' , resolveGlobalFqn ( projectRootPath , '"./src/components/UnnamedIndexComponent".default' ) , 1 ) ;
125+ expectJSXDependency (
126+ comp ,
127+ resolveGlobalFqn ( projectRootPath , '"./src/components/UnnamedIndexComponent".default' ) ,
128+ "UnnamedIndexComponent" ,
129+ 1 ,
130+ ) ;
131+ expectDependency (
132+ projectRootPath ,
133+ dependencies ,
134+ '"./src/main.tsx".ComponentWithUnnamedIndexDefaultComponent' ,
135+ resolveGlobalFqn ( projectRootPath , '"./src/components/UnnamedIndexComponent".default' ) ,
136+ 1 ,
137+ ) ;
118138 }
119139 } ) ;
120140
@@ -124,28 +144,44 @@ describe("React Components test", () => {
124144 const compAlias = components . get ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ComponentWithNamedAliasIndexDefaultComponent' ) ) ;
125145
126146 expect ( compDef ) . toBeDefined ( ) ;
127- if ( compDef ) {
147+ if ( compDef ) {
128148 expect ( compDef . componentName ) . toBe ( "MyNamedIndexComponent" ) ;
129149 expect ( compDef . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) ) ;
130150 expect ( compDef . renderedElements ) . toHaveLength ( 1 ) ;
131- expectJSXDependency ( compDef , ' div' , ' div' , 1 ) ;
151+ expectJSXDependency ( compDef , " div" , " div" , 1 ) ;
132152 }
133153 expect ( comp ) . toBeDefined ( ) ;
134- if ( comp ) {
154+ if ( comp ) {
135155 expect ( comp . componentName ) . toBe ( "ComponentWithNamedIndexDefaultComponent" ) ;
136156 expect ( comp . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ComponentWithNamedIndexDefaultComponent' ) ) ;
137157 expect ( comp . renderedElements ) . toHaveLength ( 1 ) ;
138- expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) , 'NamedIndexComponent' , 1 ) ;
139- expectDependency ( projectRootPath , dependencies , '"./src/main.tsx".ComponentWithNamedIndexDefaultComponent' , resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) , 1 ) ;
158+ expectJSXDependency ( comp , resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) , "NamedIndexComponent" , 1 ) ;
159+ expectDependency (
160+ projectRootPath ,
161+ dependencies ,
162+ '"./src/main.tsx".ComponentWithNamedIndexDefaultComponent' ,
163+ resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) ,
164+ 1 ,
165+ ) ;
140166 }
141167 expect ( compAlias ) . toBeDefined ( ) ;
142- if ( compAlias ) {
168+ if ( compAlias ) {
143169 expect ( compAlias . componentName ) . toBe ( "ComponentWithNamedAliasIndexDefaultComponent" ) ;
144170 expect ( compAlias . fqn . globalFqn ) . toBe ( resolveGlobalFqn ( projectRootPath , '"./src/main.tsx".ComponentWithNamedAliasIndexDefaultComponent' ) ) ;
145171 expect ( compAlias . renderedElements ) . toHaveLength ( 1 ) ;
146- expectJSXDependency ( compAlias , resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) , 'MyNamedIndexComponent' , 1 ) ;
147- expectDependency ( projectRootPath , dependencies , '"./src/main.tsx".ComponentWithNamedAliasIndexDefaultComponent' , resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) , 1 ) ;
172+ expectJSXDependency (
173+ compAlias ,
174+ resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) ,
175+ "MyNamedIndexComponent" ,
176+ 1 ,
177+ ) ;
178+ expectDependency (
179+ projectRootPath ,
180+ dependencies ,
181+ '"./src/main.tsx".ComponentWithNamedAliasIndexDefaultComponent' ,
182+ resolveGlobalFqn ( projectRootPath , '"./src/components/NamedIndexComponent".default' ) ,
183+ 1 ,
184+ ) ;
148185 }
149186 } ) ;
150-
151187} ) ;
0 commit comments