Refactor email handling for multiple recipients

Refactored the `Email` and `OutgoingEmailEvent` classes to replace the `Recipient` property with a `Recipients` collection, enabling support for multiple recipients. Updated all related test cases, including `EmailSenderTests`, `EmailSenderUrlOverloadTests`, and `OutgoingEmailPublisherTests`, to reflect this change.

Moved the `EmailAccountDto` class and its references from the `DigitalData.MessagingService.Application.Common.Dtos` namespace to the `DigitalData.MessagingService.Publisher.Abstraction` namespace for better code organization. Updated `using` directives across affected files.

Removed unused `using` directives and updated the `Email` class's `ToEvent` method to map the new `Recipients` property. Adjusted test assertions to validate collections instead of single recipient strings.
This commit is contained in:
2026-08-05 13:11:19 +02:00
parent e47333cd1d
commit 0d9d15032f
12 changed files with 17 additions and 23 deletions

View File

@@ -77,7 +77,7 @@ public sealed class EmailSenderTests
{
var email = new Email
{
Recipient = "hakanttek@gmail.com",
Recipients = ["hakanttek@gmail.com"],
Subject = "EmailSender.Send Integration Test",
Body = "<p>Sent via EmailSender static client.</p>",
IsHtml = true,
@@ -93,7 +93,7 @@ public sealed class EmailSenderTests
{
var email = new Email
{
Recipient = "hakanttek@gmail.com",
Recipients = ["hakanttek@gmail.com"],
Subject = "Plain Text Test",
Body = "This is a plain text email.",
IsHtml = false

View File

@@ -57,7 +57,7 @@ public sealed class EmailSenderUrlOverloadTests
{
var email = new Email
{
Recipient = "url-overload-test@example.com",
Recipients = ["url-overload-test@example.com"],
Subject = "URL Overload Integration Test",
Body = "<p>Sent after URL-based connection.</p>",
IsHtml = true

View File

@@ -37,7 +37,7 @@ public sealed class OutgoingEmailPublisherTests : IAsyncDisposable
var email = new OutgoingEmailEvent
{
Id = Guid.NewGuid(),
Recipient = "test@example.com",
Recipients = ["test@example.com"],
Subject = "Integration Test - EnqueueAsync",
Body = "<p>Hello from integration test.</p>",
IsHtml = true,
@@ -62,7 +62,7 @@ public sealed class OutgoingEmailPublisherTests : IAsyncDisposable
var emails = Enumerable.Range(1, 3).Select(i => new OutgoingEmailEvent
{
Id = Guid.NewGuid(),
Recipient = $"recipient{i}@example.com",
Recipients = new List<string> { $"recipient{i}@example.com" },
Subject = $"Integration Test - Batch #{i}",
Body = $"Batch message {i}",
IsHtml = false,
@@ -85,7 +85,7 @@ public sealed class OutgoingEmailPublisherTests : IAsyncDisposable
var email = new OutgoingEmailEvent
{
Id = Guid.NewGuid(),
Recipient = "depth-test@example.com",
Recipients = ["depth-test@example.com"],
Subject = "Integration Test - GetQueueDepth",
Body = "Queue depth test",
IsHtml = false,
@@ -108,7 +108,7 @@ public sealed class OutgoingEmailPublisherTests : IAsyncDisposable
var email = new OutgoingEmailEvent
{
Id = id,
Recipient = "serialize@example.com",
Recipients = new List<string> { "serialize@example.com" },
Subject = "Serialization Test",
Body = "<strong>Bold</strong>",
IsHtml = true,
@@ -123,7 +123,7 @@ public sealed class OutgoingEmailPublisherTests : IAsyncDisposable
Assert.NotNull(received);
Assert.Equal(id, received.Id);
Assert.Equal("serialize@example.com", received.Recipient);
Assert.Equal(["serialize@example.com"], received.Recipients);
Assert.Equal("Serialization Test", received.Subject);
Assert.Equal("<strong>Bold</strong>", received.Body);
Assert.True(received.IsHtml);