From ccc4e948f3e3e0759504752d01d3357d54ab9c20 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 15 Sep 2025 12:44:36 +0200 Subject: [PATCH] feat(TestBase): seed real email templates in TestBase setup - Added `RealEmailTemplates` property with predefined email templates. - Populated the repository with these templates in the `Setup` method. - Ensures tests have consistent, realistic email data available. --- .../DocSigned/Handlers/HistoryHandler.cs | 5 +- .../Common/Notifications/SendMailHandler.cs | 4 +- .../Entities/EmailTemplate.cs | 5 +- .../TestBase.cs | 98 +++++++++++++++++++ 4 files changed, 105 insertions(+), 7 deletions(-) diff --git a/EnvelopeGenerator.Application/Common/Notifications/DocSigned/Handlers/HistoryHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/DocSigned/Handlers/HistoryHandler.cs index cac9aa81..8b935aa1 100644 --- a/EnvelopeGenerator.Application/Common/Notifications/DocSigned/Handlers/HistoryHandler.cs +++ b/EnvelopeGenerator.Application/Common/Notifications/DocSigned/Handlers/HistoryHandler.cs @@ -30,9 +30,8 @@ public class HistoryHandler : INotificationHandler /// public async Task Handle(DocSignedNotification notification, CancellationToken cancel) { - if(notification.Receiver is null) - if (notification.Receiver is null) - throw new InvalidOperationException($"Receiver information is missing in the notification. DocSignedNotification:\n {notification.ToJson(Format.Json.ForDiagnostics)}"); + if (notification.Receiver is null) + throw new InvalidOperationException($"Receiver information is missing in the notification. DocSignedNotification:\n {notification.ToJson(Format.Json.ForDiagnostics)}"); await _sender.Send(new CreateHistoryCommand() { diff --git a/EnvelopeGenerator.Application/Common/Notifications/SendMailHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/SendMailHandler.cs index 1e6fd790..25b55bc7 100644 --- a/EnvelopeGenerator.Application/Common/Notifications/SendMailHandler.cs +++ b/EnvelopeGenerator.Application/Common/Notifications/SendMailHandler.cs @@ -99,8 +99,8 @@ public abstract class SendMailHandler : INotificationHandler x.Name == notification.TemplateType.ToString(), cancel) + .Where(x => x.Name == notification.TemplateType.ToString()) + .SingleOrDefaultAsync(cancel) ?? throw new InvalidOperationException($"Receiver information is missing in the notification." + $"{typeof(TNotification)}:\n {notification.ToJson(Format.Json.ForDiagnostics)}"); diff --git a/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs b/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs index cc392e71..06409561 100644 --- a/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs +++ b/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs @@ -1,4 +1,5 @@ -using System.ComponentModel; +using DigitalData.Core.Abstractions.Interfaces; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK @@ -13,7 +14,7 @@ namespace EnvelopeGenerator.Domain.Entities #endif [Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")] -public class EmailTemplate +public class EmailTemplate : IEntity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] diff --git a/EnvelopeGenerator.Tests.Application/TestBase.cs b/EnvelopeGenerator.Tests.Application/TestBase.cs index e899cae2..0f88a7e0 100644 --- a/EnvelopeGenerator.Tests.Application/TestBase.cs +++ b/EnvelopeGenerator.Tests.Application/TestBase.cs @@ -31,6 +31,10 @@ public abstract class TestBase : Faker { Host = Fake.CreateHost(ConfigureServices); await Host.AddSamples(); + + // Add seed email templates + foreach (var temp in SeedEmailTemplates) + await Repository.CreateAsync(temp); } [TearDown] @@ -38,4 +42,98 @@ public abstract class TestBase : Faker { Host.Dispose(); } + + protected static List SeedEmailTemplates => new() + { + new EmailTemplate + { + Id = 1, + Name = "DocumentReceived", + Body = "Guten Tag [NAME_RECEIVER],

[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.

Über den folgenden Link können Sie das Dokument einsehen und elektronisch unterschreiben: [LINK_TO_DOCUMENT_TEXT]

[MESSAGE]

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Dokument erhalten: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-05-29 09:33:54.913"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.020") + }, + new EmailTemplate + { + Id = 2, + Name = "DocumentDeleted", + Body = "Guten Tag [NAME_RECEIVER],

[NAME_SENDER] hat den Umschlag '[DOCUMENT_TITLE]' gelöscht/zurückgezogen.

Begründung:
[REASON]


Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Umschlag zurückgezogen: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-05-29 09:33:54.913"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.033") + }, + new EmailTemplate + { + Id = 3, + Name = "DocumentSigned", + Body = "Guten Tag [NAME_RECEIVER],

hiermit bestätigen wir Ihnen die erfolgreiche Signatur für den Vorgang '[DOCUMENT_TITLE]'.
Wenn alle Vertragspartner unterzeichnet haben, erhalten Sie ebenfalls per email ein unterschriebenes Exemplar mit dem Signierungszertifikat!
Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Dokument unterschrieben: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-05-29 09:33:54.913"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.033") + }, + new EmailTemplate + { + Id = 4, + Name = "DocumentCompleted", + Body = "Guten Tag [NAME_RECEIVER],

Der Signaturvorgang '[DOCUMENT_TITLE]' wurde erfolgreich abgeschlossen.

Sie erhalten das Dokument mit einem detaillierten Ergebnisbericht als Anhang zu dieser Email.

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Umschlag abgeschlossen: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-05-29 09:33:54.913"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.050") + }, + new EmailTemplate + { + Id = 5, + Name = "DocumentAccessCodeReceived", + Body = "Guten Tag [NAME_RECEIVER],

[NAME_SENDER] hat Ihnen ein Dokument zum [SIGNATURE_TYPE] gesendet.

Verwenden Sie den folgenden Zugriffscode, um das Dokument einzusehen:

[DOCUMENT_ACCESS_CODE]

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Zugriffscode für Dokument erhalten: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-05-29 09:33:54.913"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.050") + }, + new EmailTemplate + { + Id = 6, + Name = "DocumentRejected_ADM", + Body = "Guten Tag [NAME_SENDER],

[NAME_RECEIVER] hat den Umschlag '[DOCUMENT_TITLE]' mit folgendem Grund abgelehnt:

[REASON]

Der Umschlag wurde auf den Status Rejected gesetzt.

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang zurückgezogen", + AddedWhen = DateTime.Parse("2024-06-06 10:25:14.917"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.067") + }, + new EmailTemplate + { + Id = 9, + Name = "DocumentRejected_REC", + Body = "Guten Tag [NAME_RECEIVER],

Hiermit bestätigen wir Ihnen die Ablehnung des Unterzeichnungsvorganges '[DOCUMENT_TITLE]'!

Der Vertragsinhaber [NAME_SENDER] wurde über die Ablehnung informiert.

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Bestätigung Ablehnung", + AddedWhen = DateTime.Parse("2024-06-12 09:24:34.927"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.067") + }, + new EmailTemplate + { + Id = 10, + Name = "DocumentRejected_REC_2", + Body = "Guten Tag [NAME_RECEIVER],

Der Unterzeichnungsvorganges '[DOCUMENT_TITLE]' wurde durch einen anderen Vertragspartner abgelehnt! Ihre notwendige Unterzeichnung wurde verworfen.

Der Vertragsinhaber [NAME_SENDER] wird sich bei Bedarf mit Ihnen in Verbindung setzen.

Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "'[DOCUMENT_TITLE]' - Unterzeichnungsvorgang abgelehnt.", + AddedWhen = DateTime.Parse("2024-06-12 09:55:40.613"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.080") + }, + new EmailTemplate + { + Id = 11, + Name = "DocumentShared", + Body = "Guten Tag,

[NAME_RECEIVER] hat Ihnen ein Dokument zum Ansehen gesendet.

Über den folgenden Link können Sie das Dokument einsehen: [LINK_TO_DOCUMENT_TEXT]


Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "Dokument geteilt: '[DOCUMENT_TITLE]'", + AddedWhen = DateTime.Parse("2024-09-27 11:37:47.860"), + ChangedWhen = DateTime.Parse("2025-05-09 10:25:03.097") + }, + new EmailTemplate + { + Id = 12, + Name = "TotpSecret", + Body = "Guten Tag,

Sie können auf Ihren Zwei-Faktor-Authentifizierungscode zugreifen, indem Sie den unten stehenden QR-Code mit einer beliebigen Authentifizierungs-App auf Ihrem Telefon scannen (Google Authenticator, Microsoft Authenticator usw.). Dieser Code ist bis zum [TFA_EXPIRATION] gültig.




Mit freundlichen Grüßen

[NAME_PORTAL]", + Subject = "2-Faktor-Authentifizierung QR-Code", + AddedWhen = DateTime.Parse("2024-12-11 10:07:08.400"), + ChangedWhen = DateTime.Parse("2025-05-12 10:43:44.290") + } + }; } \ No newline at end of file