@@ -379,6 +379,40 @@ public void AppendXmlDocComment_Extends_CodeBuilder()
379379 codeBuilder . ToString ( ) . Should ( ) . Contain ( "Some description" ) ;
380380 }
381381
382+ [ Test ]
383+ public void QueryParameterExtractor_Returns_Empty_When_No_Query_Parameters ( )
384+ {
385+ var operationModel = CreateOperationModel ( ) ;
386+ var extractor = new QueryParameterExtractor ( ) ;
387+ var result = extractor . Extract ( operationModel , new OpenApiOperation ( ) , new RefitGeneratorSettings ( ) ) . ToList ( ) ;
388+
389+ result . Should ( ) . BeEmpty ( ) ;
390+ extractor . DynamicQuerystringCode . Should ( ) . Be ( string . Empty ) ;
391+ }
392+
393+ [ Test ]
394+ public void QueryParameterExtractor_With_Dynamic_Enabled_But_Single_Query_Param_Falls_Back_To_Simple ( )
395+ {
396+ var param = CreateParameterModel ( "query" , "query" , "string" ,
397+ parameter : new OpenApiParameter
398+ {
399+ Name = "query" ,
400+ Kind = OpenApiParameterKind . Query ,
401+ Schema = new JsonSchema { Type = JsonObjectType . String }
402+ } ) ;
403+ var operationModel = CreateOperationModel ( param ) ;
404+ var settings = new RefitGeneratorSettings { UseDynamicQuerystringParameters = true } ;
405+
406+ var extractor = new QueryParameterExtractor
407+ {
408+ DynamicQuerystringParameterType = "QueryParams"
409+ } ;
410+ var result = extractor . Extract ( operationModel , new OpenApiOperation ( ) , settings ) . ToList ( ) ;
411+
412+ result . Should ( ) . ContainSingle ( ) . Which . Should ( ) . Contain ( "query" ) ;
413+ extractor . DynamicQuerystringCode . Should ( ) . Be ( string . Empty ) ;
414+ }
415+
382416 [ Test ]
383417 public void QueryParameterExtractor_With_No_Dynamic_Returns_Simple_Extraction ( )
384418 {
@@ -393,10 +427,10 @@ public void QueryParameterExtractor_With_No_Dynamic_Returns_Simple_Extraction()
393427 var settings = new RefitGeneratorSettings ( ) ;
394428
395429 var extractor = new QueryParameterExtractor ( ) ;
396- var args = new object ? [ ] { operationModel , new OpenApiOperation ( ) , settings } ;
397430 var result = extractor . Extract ( operationModel , new OpenApiOperation ( ) , settings ) . ToList ( ) ;
398431
399432 result . Should ( ) . ContainSingle ( ) . Which . Should ( ) . Contain ( "query" ) ;
433+ extractor . DynamicQuerystringCode . Should ( ) . Be ( string . Empty ) ;
400434 }
401435
402436 [ Test ]
@@ -434,6 +468,7 @@ public void QueryParameterExtractor_With_Dynamic_And_All_Nullable()
434468 new RefitGeneratorSettings { UseDynamicQuerystringParameters = true } ) . ToList ( ) ;
435469
436470 result . Should ( ) . ContainSingle ( ) . Which . Should ( ) . Be ( "[Query] SearchQueryParams? queryParams" ) ;
471+ extractor . DynamicQuerystringCode . Should ( ) . Contain ( "class SearchQueryParams" ) ;
437472 }
438473
439474 [ Test ]
@@ -471,6 +506,7 @@ public void QueryParameterExtractor_With_Dynamic_And_Not_All_Nullable()
471506 new RefitGeneratorSettings { UseDynamicQuerystringParameters = true } ) . ToList ( ) ;
472507
473508 result . Should ( ) . ContainSingle ( ) . Which . Should ( ) . Be ( "[Query] SearchQueryParams queryParams" ) ;
509+ extractor . DynamicQuerystringCode . Should ( ) . Contain ( "class SearchQueryParams" ) ;
474510 }
475511
476512 private static CSharpParameterModel CreateParameterModel (
0 commit comments