Skip to content

Commit db3868a

Browse files
committed
refactor: implement AI feedback
1 parent 042f97d commit db3868a

2 files changed

Lines changed: 34 additions & 16 deletions

File tree

config/clients/dotnet/CHANGELOG.md.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
- per-request headers support via `Headers` property on all client options classes
88
- `IRequestOptions` interface and `RequestOptions` class for API-level header support
99
- `IClientRequestOptions` interface and `ClientRequestOptions` class for client-level header support
10-
- add header validation to prevent overiding of reserved headers
10+
- add header validation to prevent overriding of reserved headers
1111
- feat: add write conflict resolution options
1212
- `ConflictOptions` to control behavior for duplicate writes and missing deletes
1313
- `OnDuplicateWrites` option: `Error` (default) or `Ignore` for handling duplicate tuple writes

config/clients/dotnet/template/OpenFgaClientTests.mustache

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2571,6 +2571,7 @@ public class {{appShortName}}ClientTests : IDisposable {
25712571
[Fact]
25722572
public async Task WriteTuples_WithConflictOptions_ShouldPassOptionToApi() {
25732573
WriteRequest? capturedRequest = null;
2574+
HttpResponseMessage? responseMsg = null;
25742575
var mockHandler = new Mock<HttpMessageHandler>(MockBehavior.Strict);
25752576
mockHandler.Protected()
25762577
.Setup<Task<HttpResponseMessage>>(
@@ -2580,9 +2581,12 @@ public class {{appShortName}}ClientTests : IDisposable {
25802581
req.Method == HttpMethod.Post),
25812582
ItExpr.IsAny<CancellationToken>()
25822583
)
2583-
.ReturnsAsync(new HttpResponseMessage() {
2584-
StatusCode = HttpStatusCode.OK,
2585-
Content = Utils.CreateJsonStringContent(new Object()),
2584+
.ReturnsAsync(() => {
2585+
responseMsg = new HttpResponseMessage() {
2586+
StatusCode = HttpStatusCode.OK,
2587+
Content = Utils.CreateJsonStringContent(new Object()),
2588+
};
2589+
return responseMsg;
25862590
})
25872591
.Callback<HttpRequestMessage, CancellationToken>((req, _) => {
25882592
var content = req.Content!.ReadAsStringAsync().Result;
@@ -2600,16 +2604,24 @@ public class {{appShortName}}ClientTests : IDisposable {
26002604
}
26012605
};
26022606

2603-
await fgaClient.WriteTuples(tuples, new ClientWriteOptions {
2604-
AuthorizationModelId = "01GXSA8YR785C4FYS3C0RTG7B1",
2605-
Conflict = new ConflictOptions {
2606-
OnDuplicateWrites = OnDuplicateWrites.Ignore
2607-
}
2608-
});
2607+
try
2608+
{
2609+
await fgaClient.WriteTuples(tuples, new ClientWriteOptions {
2610+
AuthorizationModelId = "01GXSA8YR785C4FYS3C0RTG7B1",
2611+
Conflict = new ConflictOptions {
2612+
OnDuplicateWrites = OnDuplicateWrites.Ignore
2613+
}
2614+
});
26092615

2610-
Assert.NotNull(capturedRequest);
2611-
Assert.NotNull(capturedRequest.Writes);
2612-
Assert.Equal(WriteRequestWrites.OnDuplicateEnum.Ignore, capturedRequest.Writes.OnDuplicate);
2616+
Assert.NotNull(capturedRequest);
2617+
Assert.NotNull(capturedRequest.Writes);
2618+
Assert.Equal(WriteRequestWrites.OnDuplicateEnum.Ignore, capturedRequest.Writes.OnDuplicate);
2619+
}
2620+
finally
2621+
{
2622+
if (responseMsg != null)
2623+
responseMsg.Dispose();
2624+
}
26132625
}
26142626

26152627
/// <summary>
@@ -2618,6 +2630,7 @@ public class {{appShortName}}ClientTests : IDisposable {
26182630
[Fact]
26192631
public async Task DeleteTuples_WithConflictOptions_ShouldPassOptionToApi() {
26202632
WriteRequest? capturedRequest = null;
2633+
HttpResponseMessage? httpResponse = null;
26212634
var mockHandler = new Mock<HttpMessageHandler>(MockBehavior.Strict);
26222635
mockHandler.Protected()
26232636
.Setup<Task<HttpResponseMessage>>(
@@ -2627,9 +2640,12 @@ public class {{appShortName}}ClientTests : IDisposable {
26272640
req.Method == HttpMethod.Post),
26282641
ItExpr.IsAny<CancellationToken>()
26292642
)
2630-
.ReturnsAsync(new HttpResponseMessage() {
2631-
StatusCode = HttpStatusCode.OK,
2632-
Content = Utils.CreateJsonStringContent(new Object()),
2643+
.ReturnsAsync(() => {
2644+
httpResponse = new HttpResponseMessage() {
2645+
StatusCode = HttpStatusCode.OK,
2646+
Content = Utils.CreateJsonStringContent(new Object()),
2647+
};
2648+
return httpResponse;
26332649
})
26342650
.Callback<HttpRequestMessage, CancellationToken>((req, _) => {
26352651
var content = req.Content!.ReadAsStringAsync().Result;
@@ -2657,6 +2673,8 @@ public class {{appShortName}}ClientTests : IDisposable {
26572673
Assert.NotNull(capturedRequest);
26582674
Assert.NotNull(capturedRequest.Deletes);
26592675
Assert.Equal(WriteRequestDeletes.OnMissingEnum.Ignore, capturedRequest.Deletes.OnMissing);
2676+
2677+
httpResponse?.Dispose();
26602678
}
26612679

26622680
/// <summary>

0 commit comments

Comments
 (0)