From 41e10621484641b9ff35ec78eefbe5bc5a1c2188 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 3 Oct 2024 19:12:00 +0200 Subject: [PATCH] Enhance JSON deserialization to include service provider Updated ReadAsJsonAsync method to accept an IServiceProvider parameter for improved JSON deserialization. Modified corresponding tests and helper classes to utilize the service provider for more flexible JSON serialization options. --- .../Helpers/Extensions/HttpResponseMessageExtensions.cs | 5 +++-- .../Helpers/Fixtures/WorkflowServer.cs | 2 +- .../Scenarios/BasicWorkflows/HelloWorldTests.cs | 2 +- .../Scenarios/LogPersistenceModes/InputOutputLoggingTests.cs | 2 +- .../Scenarios/WorkflowCompletion/WorkflowCompletionTests.cs | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Helpers/Extensions/HttpResponseMessageExtensions.cs b/test/component/Elsa.Workflows.ComponentTests/Helpers/Extensions/HttpResponseMessageExtensions.cs index 3d50e634d..bc4ffff80 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Helpers/Extensions/HttpResponseMessageExtensions.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Helpers/Extensions/HttpResponseMessageExtensions.cs @@ -1,14 +1,15 @@ using System.Text.Json; using Elsa.Api.Client; +// ReSharper disable once CheckNamespace namespace Elsa.Workflows.ComponentTests; public static class HttpResponseMessageExtensions { - public static async Task ReadAsJsonAsync(this HttpResponseMessage response, CancellationToken cancellationToken = default) + public static async Task ReadAsJsonAsync(this HttpResponseMessage response, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) { var json = await response.Content.ReadAsStringAsync(cancellationToken); - var options = RefitSettingsHelper.CreateJsonSerializerOptions(); + var options = RefitSettingsHelper.CreateJsonSerializerOptions(serviceProvider); return JsonSerializer.Deserialize(json, options)!; } } \ No newline at end of file diff --git a/test/component/Elsa.Workflows.ComponentTests/Helpers/Fixtures/WorkflowServer.cs b/test/component/Elsa.Workflows.ComponentTests/Helpers/Fixtures/WorkflowServer.cs index a026a35a4..9f9f99897 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Helpers/Fixtures/WorkflowServer.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Helpers/Fixtures/WorkflowServer.cs @@ -31,7 +31,7 @@ public class WorkflowServer(Infrastructure infrastructure, string url) : WebAppl var client = CreateClient(); client.BaseAddress = new Uri(client.BaseAddress!, "/elsa/api"); client.Timeout = TimeSpan.FromMinutes(1); - return RestService.For(client, CreateRefitSettings()); + return RestService.For(client, CreateRefitSettings(Services)); } public HttpClient CreateHttpWorkflowClient() diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/BasicWorkflows/HelloWorldTests.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/BasicWorkflows/HelloWorldTests.cs index 7b8da577b..f2446ee40 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/BasicWorkflows/HelloWorldTests.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/BasicWorkflows/HelloWorldTests.cs @@ -11,7 +11,7 @@ public class HelloWorldTests(App app) : AppComponentTest(app) { var client = WorkflowServer.CreateApiClient(); using var response = await client.ExecuteAsync("1590068018aa4f0a"); - var model = await response.ReadAsJsonAsync(); + var model = await response.ReadAsJsonAsync(WorkflowServer.Services); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(WorkflowSubStatus.Finished, model.WorkflowState.SubStatus); } diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/InputOutputLoggingTests.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/InputOutputLoggingTests.cs index 883e19a60..d3e7abc56 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/InputOutputLoggingTests.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/LogPersistenceModes/InputOutputLoggingTests.cs @@ -63,7 +63,7 @@ public class InputOutputLoggingTests(App app) : AppComponentTest(app) { var client = WorkflowServer.CreateApiClient(); using var response = await client.ExecuteAsync(workflowDefinitionId); - var model = await response.ReadAsJsonAsync(); + var model = await response.ReadAsJsonAsync(WorkflowServer.Services); return model.WorkflowState; } diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowCompletion/WorkflowCompletionTests.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowCompletion/WorkflowCompletionTests.cs index 1618746ca..171fe196c 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowCompletion/WorkflowCompletionTests.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/WorkflowCompletion/WorkflowCompletionTests.cs @@ -13,7 +13,7 @@ public class WorkflowCompletionTests(App app) : AppComponentTest(app) { var client = WorkflowServer.CreateApiClient(); using var response = await client.ExecuteAsync(workflowDefinitionId); - var model = await response.ReadAsJsonAsync(); + var model = await response.ReadAsJsonAsync(WorkflowServer.Services); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(WorkflowSubStatus.Finished, model.WorkflowState.SubStatus); }