@@ -72,6 +72,33 @@ describe(MethodRow.name, () => {
7272 expect ( screen . queryByLabelText ( "Loading" ) ) . not . toBeInTheDocument ( ) ;
7373 } ) ;
7474
75+ it ( "can change the type when there is no modeled method" , async ( ) => {
76+ render ( { modeledMethods : [ ] } ) ;
77+
78+ onChange . mockReset ( ) ;
79+
80+ await userEvent . selectOptions (
81+ screen . getByRole ( "combobox" , { name : "Model type" } ) ,
82+ "source" ,
83+ ) ;
84+
85+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
86+ expect ( onChange ) . toHaveBeenCalledWith ( method . signature , [
87+ {
88+ type : "source" ,
89+ input : "Argument[0]" ,
90+ output : "ReturnValue" ,
91+ kind : "value" ,
92+ provenance : "manual" ,
93+ signature : method . signature ,
94+ packageName : method . packageName ,
95+ typeName : method . typeName ,
96+ methodName : method . methodName ,
97+ methodParameters : method . methodParameters ,
98+ } ,
99+ ] ) ;
100+ } ) ;
101+
75102 it ( "can change the kind" , async ( ) => {
76103 render ( ) ;
77104
@@ -182,6 +209,38 @@ describe(MethodRow.name, () => {
182209 expect ( kindInputs [ 0 ] ) . toHaveValue ( "source" ) ;
183210 } ) ;
184211
212+ it ( "can update fields when there are multiple models" , async ( ) => {
213+ render ( {
214+ modeledMethods : [
215+ { ...modeledMethod , type : "source" } ,
216+ { ...modeledMethod , type : "sink" , kind : "code-injection" } ,
217+ { ...modeledMethod , type : "summary" } ,
218+ ] ,
219+ viewState : {
220+ ...viewState ,
221+ showMultipleModels : true ,
222+ } ,
223+ } ) ;
224+
225+ onChange . mockReset ( ) ;
226+
227+ expect ( screen . getAllByRole ( "combobox" , { name : "Kind" } ) [ 1 ] ) . toHaveValue (
228+ "code-injection" ,
229+ ) ;
230+
231+ await userEvent . selectOptions (
232+ screen . getAllByRole ( "combobox" , { name : "Kind" } ) [ 1 ] ,
233+ "sql-injection" ,
234+ ) ;
235+
236+ expect ( onChange ) . toHaveBeenCalledTimes ( 1 ) ;
237+ expect ( onChange ) . toHaveBeenCalledWith ( method . signature , [
238+ { ...modeledMethod , type : "source" } ,
239+ { ...modeledMethod , type : "sink" , kind : "sql-injection" } ,
240+ { ...modeledMethod , type : "summary" } ,
241+ ] ) ;
242+ } ) ;
243+
185244 it ( "renders an unmodelable method" , ( ) => {
186245 render ( {
187246 methodCanBeModeled : false ,
0 commit comments