Skip to content

Commit 4f65ae4

Browse files
test: add QueryParameterExtractor coverage for empty, fallback, and DynamicQuerystringCode paths
1 parent ffa3bd6 commit 4f65ae4

1 file changed

Lines changed: 37 additions & 1 deletion

File tree

src/Refitter.Tests/Parameters/ParameterExtractorPrivateCoverageTests.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)