@@ -2,50 +2,39 @@ import catalogLibrary from '@kaoto/camel-catalog/index.json';
22import { CatalogLibrary , RouteDefinition } from '@kaoto/camel-catalog/types' ;
33import { CanvasFormTabsContext , SuggestionRegistryProvider } from '@kaoto/forms' ;
44import { KaotoFormPageObject } from '@kaoto/forms/testing' ;
5- import { act , fireEvent , render , screen , waitFor } from '@testing-library/react' ;
6-
7- import {
8- CamelCatalogService ,
9- CamelRouteVisualEntity ,
10- CatalogKind ,
11- ICamelComponentDefinition ,
12- ICamelProcessorDefinition ,
13- IKameletDefinition ,
14- } from '../../../../models' ;
5+ import { act , cleanup , fireEvent , render , screen , waitFor } from '@testing-library/react' ;
6+
7+ import { CamelCatalogService , CamelRouteVisualEntity , CatalogKind } from '../../../../models' ;
158import { IVisualizationNode } from '../../../../models/visualization/base-visual-entity' ;
9+ import { setupDynamicCatalogRegistryMock } from '../../../../models/visualization/flows/dynamic-catalog-registry-mock' ;
1610import { VisibleFlowsProvider } from '../../../../providers' ;
1711import { EntitiesContext } from '../../../../providers/entities.provider' ;
1812import { TestProvidersWrapper } from '../../../../stubs' ;
1913import { getFirstCatalogMap } from '../../../../stubs/test-load-catalog' ;
2014import { ROOT_PATH } from '../../../../utils' ;
2115import { CanvasFormBody } from './CanvasFormBody' ;
2216
23- describe ( 'CanvasFormBody' , ( ) => {
24- let componentCatalogMap : Record < string , ICamelComponentDefinition > ;
25- let patternCatalogMap : Record < string , ICamelProcessorDefinition > ;
26- let kameletCatalogMap : Record < string , IKameletDefinition > ;
17+ jest . mock ( '../../../../dynamic-catalog/dynamic-catalog-registry' ) ;
2718
19+ describe ( 'CanvasFormBody' , ( ) => {
2820 beforeAll ( async ( ) => {
2921 const catalogsMap = await getFirstCatalogMap ( catalogLibrary as CatalogLibrary ) ;
30- componentCatalogMap = catalogsMap . componentCatalogMap ;
31- patternCatalogMap = catalogsMap . patternCatalogMap ;
32- kameletCatalogMap = catalogsMap . kameletsCatalogMap ;
33-
34- CamelCatalogService . setCatalogKey ( CatalogKind . Component , componentCatalogMap ) ;
35- CamelCatalogService . setCatalogKey ( CatalogKind . Pattern , patternCatalogMap ) ;
36- CamelCatalogService . setCatalogKey ( CatalogKind . Kamelet , kameletCatalogMap ) ;
37- CamelCatalogService . setCatalogKey ( CatalogKind . Processor , catalogsMap . modelCatalogMap ) ;
22+
23+ setupDynamicCatalogRegistryMock ( catalogsMap ) ;
24+
3825 CamelCatalogService . setCatalogKey ( CatalogKind . Language , catalogsMap . languageCatalog ) ;
39- CamelCatalogService . setCatalogKey ( CatalogKind . Dataformat , catalogsMap . dataformatCatalog ) ;
40- CamelCatalogService . setCatalogKey ( CatalogKind . Loadbalancer , catalogsMap . loadbalancerCatalog ) ;
41- CamelCatalogService . setCatalogKey ( CatalogKind . Entity , catalogsMap . entitiesCatalog ) ;
4226 } ) ;
4327
4428 describe ( 'should persists changes from both expression editor and main form' , ( ) => {
4529 beforeEach ( ( ) => {
4630 jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
4731 } ) ;
4832
33+ afterEach ( ( ) => {
34+ cleanup ( ) ;
35+ jest . restoreAllMocks ( ) ;
36+ } ) ;
37+
4938 it ( 'expression => main form' , async ( ) => {
5039 const camelRoute = {
5140 from : {
@@ -83,6 +72,14 @@ describe('CanvasFormBody', () => {
8372 </ EntitiesContext . Provider > ,
8473 ) ;
8574
75+ // Wait for async schema to load and form to render
76+ await waitFor (
77+ ( ) => {
78+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
79+ } ,
80+ { timeout : 5000 } ,
81+ ) ;
82+
8683 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
8784 await formPageObject . showAllFields ( ) ;
8885 await formPageObject . toggleExpressionFieldForProperty ( ROOT_PATH ) ;
@@ -137,6 +134,14 @@ describe('CanvasFormBody', () => {
137134 </ EntitiesContext . Provider > ,
138135 ) ;
139136
137+ // Wait for async schema to load and form to render
138+ await waitFor (
139+ ( ) => {
140+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
141+ } ,
142+ { timeout : 5000 } ,
143+ ) ;
144+
140145 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
141146 await formPageObject . showAllFields ( ) ;
142147 await formPageObject . inputText ( 'Name' , 'bar' ) ;
@@ -159,6 +164,11 @@ describe('CanvasFormBody', () => {
159164 jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
160165 } ) ;
161166
167+ afterEach ( ( ) => {
168+ cleanup ( ) ;
169+ jest . restoreAllMocks ( ) ;
170+ } ) ;
171+
162172 it ( 'dataformat => main form' , async ( ) => {
163173 const camelRoute = {
164174 from : {
@@ -196,6 +206,14 @@ describe('CanvasFormBody', () => {
196206 </ EntitiesContext . Provider > ,
197207 ) ;
198208
209+ // Wait for async schema to load and form to render
210+ await waitFor (
211+ ( ) => {
212+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
213+ } ,
214+ { timeout : 5000 } ,
215+ ) ;
216+
199217 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
200218 await formPageObject . showAllFields ( ) ;
201219 await formPageObject . toggleOneOfFieldForProperty ( ROOT_PATH ) ;
@@ -247,6 +265,14 @@ describe('CanvasFormBody', () => {
247265 </ EntitiesContext . Provider > ,
248266 ) ;
249267
268+ // Wait for async schema to load and form to render
269+ await waitFor (
270+ ( ) => {
271+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
272+ } ,
273+ { timeout : 5000 } ,
274+ ) ;
275+
250276 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
251277 await formPageObject . showAllFields ( ) ;
252278 await formPageObject . inputText ( 'Id' , 'modified' , { index : 0 } ) ;
@@ -266,6 +292,11 @@ describe('CanvasFormBody', () => {
266292 jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
267293 } ) ;
268294
295+ afterEach ( ( ) => {
296+ cleanup ( ) ;
297+ jest . restoreAllMocks ( ) ;
298+ } ) ;
299+
269300 it ( 'loadbalancer => main form' , async ( ) => {
270301 const camelRoute = {
271302 from : {
@@ -303,6 +334,14 @@ describe('CanvasFormBody', () => {
303334 </ EntitiesContext . Provider > ,
304335 ) ;
305336
337+ // Wait for async schema to load and form to render
338+ await waitFor (
339+ ( ) => {
340+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
341+ } ,
342+ { timeout : 5000 } ,
343+ ) ;
344+
306345 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
307346 await formPageObject . showAllFields ( ) ;
308347 await formPageObject . toggleOneOfFieldForProperty ( ROOT_PATH ) ;
@@ -354,6 +393,14 @@ describe('CanvasFormBody', () => {
354393 </ EntitiesContext . Provider > ,
355394 ) ;
356395
396+ // Wait for async schema to load and form to render
397+ await waitFor (
398+ ( ) => {
399+ expect ( screen . getByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
400+ } ,
401+ { timeout : 5000 } ,
402+ ) ;
403+
357404 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
358405 await formPageObject . showAllFields ( ) ;
359406 await formPageObject . inputText ( 'Id' , 'modified' , { index : 0 } ) ;
@@ -371,7 +418,7 @@ describe('CanvasFormBody', () => {
371418 it ( 'should show suggestions' , async ( ) => {
372419 const { Provider, camelResource } = TestProvidersWrapper ( ) ;
373420 const vizNode = await camelResource . getVisualEntities ( ) [ 0 ] . toVizNode ( ) ;
374- jest . spyOn ( vizNode , 'getNodeSchema' ) . mockReturnValue ( {
421+ jest . spyOn ( vizNode , 'getNodeSchema' ) . mockResolvedValue ( {
375422 type : 'object' ,
376423 properties : {
377424 name : {
@@ -395,6 +442,11 @@ describe('CanvasFormBody', () => {
395442 </ Provider > ,
396443 ) ;
397444
445+ // Wait for async schema to load
446+ await waitFor ( ( ) => {
447+ expect ( screen . queryByRole ( 'button' , { name : 'All' } ) ) . toBeInTheDocument ( ) ;
448+ } ) ;
449+
398450 const formPageObject = new KaotoFormPageObject ( screen , act ) ;
399451 const inputField = formPageObject . getFieldByDisplayName ( 'Name' ) ! ;
400452
0 commit comments