@@ -358,4 +358,84 @@ describe(MethodRow.name, () => {
358358 expect ( removeButton ?. getElementsByTagName ( "input" ) [ 0 ] ) . toBeEnabled ( ) ;
359359 }
360360 } ) ;
361+
362+ it ( "can add a new model" , async ( ) => {
363+ render ( {
364+ modeledMethods : [ modeledMethod ] ,
365+ viewState : {
366+ ...viewState ,
367+ showMultipleModels : true ,
368+ } ,
369+ } ) ;
370+
371+ onChange . mockReset ( ) ;
372+ await userEvent . click ( screen . getByLabelText ( "Add new model" ) ) ;
373+
374+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
375+ expect ( onChange ) . toHaveBeenCalledWith ( method . signature , [
376+ modeledMethod ,
377+ {
378+ type : "none" ,
379+ input : "" ,
380+ output : "" ,
381+ kind : "" ,
382+ provenance : "manual" ,
383+ signature : method . signature ,
384+ packageName : method . packageName ,
385+ typeName : method . typeName ,
386+ methodName : method . methodName ,
387+ methodParameters : method . methodParameters ,
388+ } ,
389+ ] ) ;
390+ } ) ;
391+
392+ it ( "can delete the first modeled method" , async ( ) => {
393+ render ( {
394+ modeledMethods : [
395+ { ...modeledMethod , type : "source" } ,
396+ { ...modeledMethod , type : "sink" } ,
397+ { ...modeledMethod , type : "none" } ,
398+ { ...modeledMethod , type : "summary" } ,
399+ ] ,
400+ viewState : {
401+ ...viewState ,
402+ showMultipleModels : true ,
403+ } ,
404+ } ) ;
405+
406+ onChange . mockReset ( ) ;
407+ await userEvent . click ( screen . getAllByLabelText ( "Remove model" ) [ 0 ] ) ;
408+
409+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
410+ expect ( onChange ) . toHaveBeenCalledWith ( method . signature , [
411+ { ...modeledMethod , type : "sink" } ,
412+ { ...modeledMethod , type : "none" } ,
413+ { ...modeledMethod , type : "summary" } ,
414+ ] ) ;
415+ } ) ;
416+
417+ it ( "can delete a modeled method in the middle" , async ( ) => {
418+ render ( {
419+ modeledMethods : [
420+ { ...modeledMethod , type : "source" } ,
421+ { ...modeledMethod , type : "sink" } ,
422+ { ...modeledMethod , type : "none" } ,
423+ { ...modeledMethod , type : "summary" } ,
424+ ] ,
425+ viewState : {
426+ ...viewState ,
427+ showMultipleModels : true ,
428+ } ,
429+ } ) ;
430+
431+ onChange . mockReset ( ) ;
432+ await userEvent . click ( screen . getAllByLabelText ( "Remove model" ) [ 2 ] ) ;
433+
434+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
435+ expect ( onChange ) . toHaveBeenCalledWith ( method . signature , [
436+ { ...modeledMethod , type : "source" } ,
437+ { ...modeledMethod , type : "sink" } ,
438+ { ...modeledMethod , type : "summary" } ,
439+ ] ) ;
440+ } ) ;
361441} ) ;
0 commit comments