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 3d50e634db..bc4ffff80e 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 a026a35a4d..9f9f998972 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 TClient CreateApiClient() 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 7b8da577bb..f2446ee40c 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 async Task HelloWorldWorkflow_ShouldReturnOk() { 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 883e19a602..d3e7abc569 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 @@ private async Task ExecuteWorkflowAsync(string workflowDefinition { 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 1618746ca0..171fe196ca 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 async Task Workflow_ShouldComplete(string workflowDefinitionId) { 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); }