@@ -358,4 +358,67 @@ 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+ await userEvent . click ( screen . getByLabelText ( "Add new model" ) ) ;
372+
373+ const kindInputs = screen . getAllByRole ( "combobox" , { name : "Model type" } ) ;
374+ expect ( kindInputs ) . toHaveLength ( 2 ) ;
375+ expect ( kindInputs [ 0 ] ) . toHaveValue ( modeledMethod . type ) ;
376+ expect ( kindInputs [ 1 ] ) . toHaveValue ( "none" ) ;
377+ } ) ;
378+
379+ it ( "can delete the first modeled method" , async ( ) => {
380+ render ( {
381+ modeledMethods : [
382+ { ...modeledMethod , type : "source" } ,
383+ { ...modeledMethod , type : "sink" } ,
384+ { ...modeledMethod , type : "none" } ,
385+ { ...modeledMethod , type : "summary" } ,
386+ ] ,
387+ viewState : {
388+ ...viewState ,
389+ showMultipleModels : true ,
390+ } ,
391+ } ) ;
392+
393+ await userEvent . click ( screen . getAllByLabelText ( "Remove model" ) [ 0 ] ) ;
394+
395+ const kindInputs = screen . getAllByRole ( "combobox" , { name : "Model type" } ) ;
396+ expect ( kindInputs ) . toHaveLength ( 3 ) ;
397+ expect ( kindInputs [ 0 ] ) . toHaveValue ( "sink" ) ;
398+ expect ( kindInputs [ 1 ] ) . toHaveValue ( "none" ) ;
399+ expect ( kindInputs [ 2 ] ) . toHaveValue ( "summary" ) ;
400+ } ) ;
401+
402+ it ( "can delete a modeled method in the middle" , async ( ) => {
403+ render ( {
404+ modeledMethods : [
405+ { ...modeledMethod , type : "source" } ,
406+ { ...modeledMethod , type : "sink" } ,
407+ { ...modeledMethod , type : "none" } ,
408+ { ...modeledMethod , type : "summary" } ,
409+ ] ,
410+ viewState : {
411+ ...viewState ,
412+ showMultipleModels : true ,
413+ } ,
414+ } ) ;
415+
416+ await userEvent . click ( screen . getAllByLabelText ( "Remove model" ) [ 2 ] ) ;
417+
418+ const kindInputs = screen . getAllByRole ( "combobox" , { name : "Model type" } ) ;
419+ expect ( kindInputs ) . toHaveLength ( 3 ) ;
420+ expect ( kindInputs [ 0 ] ) . toHaveValue ( "source" ) ;
421+ expect ( kindInputs [ 1 ] ) . toHaveValue ( "sink" ) ;
422+ expect ( kindInputs [ 2 ] ) . toHaveValue ( "summary" ) ;
423+ } ) ;
361424} ) ;
0 commit comments