From 05d16bb32cdfde65b6cfb605cf17c233c3c93bb6 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 5 Nov 2026 10:04:41 +0100 Subject: [PATCH] Refactor and enhance MessagingService client tests Updated `ToSender` to an extension method for improved usability. Bumped project version to 3.0.0, reflecting major changes. Added `MessagingServiceApiBaseAddress` constant for maintainability. Introduced new test for HTTP client dependency injection. Refactored command creation into a reusable `CreateCommand` method. Removed redundant code and improved test structure for clarity. --- .../GetEmailAccountQueryExtensions.cs | 2 +- ...DigitalData.MessagingService.Client.csproj | 6 +-- .../MessagingServiceClientTests.cs | 39 ++++++++++++++----- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/core/DigitalData.MessagingService.Application/EmailSending/Commands/GetEmailAccountQueryExtensions.cs b/src/core/DigitalData.MessagingService.Application/EmailSending/Commands/GetEmailAccountQueryExtensions.cs index bb9c832..20ca898 100644 --- a/src/core/DigitalData.MessagingService.Application/EmailSending/Commands/GetEmailAccountQueryExtensions.cs +++ b/src/core/DigitalData.MessagingService.Application/EmailSending/Commands/GetEmailAccountQueryExtensions.cs @@ -5,7 +5,7 @@ namespace DigitalData.MessagingService.Application.EmailSending.Commands; public static class GetEmailAccountQueryExtensions { - public static GetEmailAccountQuery ToSender(string emailAddress) + public static GetEmailAccountQuery ToSender(this string emailAddress) { return new GetEmailAccountQuery { diff --git a/src/presentation/DigitalData.MessagingService.Client/DigitalData.MessagingService.Client.csproj b/src/presentation/DigitalData.MessagingService.Client/DigitalData.MessagingService.Client.csproj index d2a5af4..1568c6b 100644 --- a/src/presentation/DigitalData.MessagingService.Client/DigitalData.MessagingService.Client.csproj +++ b/src/presentation/DigitalData.MessagingService.Client/DigitalData.MessagingService.Client.csproj @@ -11,9 +11,9 @@ icon.png http://git.dd:3000/AppStd/Rec.git digital data messaging service api client - 2.0.0 - 2.0.0.0 - 2.0.0.0 + 3.0.0 + 3.0.0.0 + 3.0.0.0 enable enable diff --git a/tests/DigitalData.MessagingService.Tests/Integration/MessagingServiceClientTests.cs b/tests/DigitalData.MessagingService.Tests/Integration/MessagingServiceClientTests.cs index f741c67..6b74fa8 100644 --- a/tests/DigitalData.MessagingService.Tests/Integration/MessagingServiceClientTests.cs +++ b/tests/DigitalData.MessagingService.Tests/Integration/MessagingServiceClientTests.cs @@ -18,6 +18,7 @@ public sealed class MessagingServiceClientTests : IAsyncDisposable { private const string SenderAddress = "test-flow@digitaldata.works"; private const string RecipientAddress = "htek0100@gmail.com"; + private const string MessagingServiceApiBaseAddress = "http://172.24.12.39:1414"; private readonly ServiceProvider _serviceProvider; private readonly IMessagingServiceClient _client; @@ -59,21 +60,41 @@ public sealed class MessagingServiceClientTests : IAsyncDisposable { var subject = $"MessagingServiceClient Integration Test {Guid.NewGuid():N}"; - var command = new PublishEmailViaSmtpCommand + var command = CreateCommand(subject); + + await _client.SendAsync(command); + + Assert.True(true, "Verify in mailbox."); + } + + [Fact] + public async Task SendAsync_WithHttpClientDependencyInjection_PublishesExpectedMessage() + { + var services = new ServiceCollection(); + services.AddLogging(); + services.AddMessagingServiceHttpClient(client => client.BaseAddress = new Uri(MessagingServiceApiBaseAddress)); + + await using var serviceProvider = services.BuildServiceProvider(); + var client = serviceProvider.GetRequiredService(); + + var subject = $"MessagingServiceHttpClient Integration Test {Guid.NewGuid():N}"; + var command = CreateCommand(subject); + + await Record.ExceptionAsync(() => client.SendAsync(command)); + + Assert.True(true, "Verify in mailbox."); + } + + private static PublishEmailViaSmtpCommand CreateCommand(string subject) + { + return new PublishEmailViaSmtpCommand { - Sender = new GetEmailAccountQuery - { - Username = SenderAddress - }, + Sender = SenderAddress.ToSender(), Recipients = [RecipientAddress], Subject = subject, Body = "

Realistic test mail via MessagingServiceClient.

", IsHtml = true }; - - await _client.SendAsync(command); - - Assert.True(true, "Verify in mailbox."); } private async Task FindMessageBySubjectAsync(string subject, int maxMessages = 100)