refactor(HistoryTests): Verbesserung von HistoryTests mit realistischen Daten und konsistenter Struktur

- Verwendung tatsächlicher Umschlag- und Empfängerdaten anstelle von magischen Zahlen
- Ersetzen von fest codierten EnvelopeId und UserReference durch dynamisch erstellte Entitäten
- Aktualisierung von ReadHistoryQuery zur Verwendung der Objektinitialisierungssyntax
- Fügen Sie CancellationToken zu Mediator.Send-Aufrufen hinzu, um Konsistenz zu gewährleisten
- Verwenden Sie EnvelopeHistoryDto explizit in der Assertion
- Verbessern Sie die Lesbarkeit und den Realismus des Tests, indem Sie vollständige Voraussetzungdaten einrichten
- Korrigieren Sie die Schreibweise im Kommentar: „EnvelopeReceiver” -> „envelope receiver”
This commit is contained in:
tekh 2025-09-03 10:08:42 +02:00
parent fc443fb87f
commit f6e34c6d91
2 changed files with 42 additions and 22 deletions

View File

@ -54,25 +54,23 @@ public class EnvelopeHistory : IHasEnvelope, IHasReceiver
[ForeignKey("EnvelopeId")] [ForeignKey("EnvelopeId")]
public virtual Envelope public virtual Envelope
#if NET #if NET
? ?
#endif #endif
Envelope { get; set; } Envelope { get; set; }
[ForeignKey("UserReference")] [ForeignKey("UserReference")]
public virtual User public virtual User
#if NET #if NET
? ?
#endif #endif
Sender Sender { get; set; }
{ get; set; }
[ForeignKey("UserReference")] [ForeignKey("UserReference")]
public virtual Receiver public virtual Receiver
#if NET #if NET
? ?
#endif #endif
Receiver Receiver { get; set; }
{ get; set; }
#if NETFRAMEWORK #if NETFRAMEWORK
[NotMapped] [NotMapped]

View File

@ -1,4 +1,5 @@
using EnvelopeGenerator.Application.Extensions; using EnvelopeGenerator.Application.Dto.EnvelopeHistory;
using EnvelopeGenerator.Application.Extensions;
using EnvelopeGenerator.Application.Histories.Commands; using EnvelopeGenerator.Application.Histories.Commands;
using EnvelopeGenerator.Application.Histories.Queries; using EnvelopeGenerator.Application.Histories.Queries;
using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Domain.Constants;
@ -35,7 +36,7 @@ public class HistoryTests : TestBase
var createReceiverCmd = this.CreateReceiverCommand(); var createReceiverCmd = this.CreateReceiverCommand();
(var receiver, _) = await Mediator.Send(createReceiverCmd); (var receiver, _) = await Mediator.Send(createReceiverCmd);
// Create EnvelopeReceiver // Create envelope receiver
var envRcv = this.CreateEnvelopeReceiver(envelope.Id, receiver.Id); var envRcv = this.CreateEnvelopeReceiver(envelope.Id, receiver.Id);
envRcv = await GetRepository<EnvelopeReceiver>().CreateAsync(envRcv, cancel); envRcv = await GetRepository<EnvelopeReceiver>().CreateAsync(envRcv, cancel);
@ -53,38 +54,59 @@ public class HistoryTests : TestBase
[Test] [Test]
public async Task ReadHistory_Should_Filter_By_Status() public async Task ReadHistory_Should_Filter_By_Status()
{ {
// Arrange /// Arrange
CancellationToken cancel = default;
// Create envelope
var envelope = FakeEnvelope;
envelope = await GetRepository<Envelope>().CreateAsync(envelope, cancel);
// Create receiver
var createReceiverCmd = this.CreateReceiverCommand();
(var receiver, _) = await Mediator.Send(createReceiverCmd);
// Create envelope receiver
var envRcv = this.CreateEnvelopeReceiver(envelope.Id, receiver.Id);
envRcv = await GetRepository<EnvelopeReceiver>().CreateAsync(envRcv, cancel);
var createCmd1 = new CreateHistoryCommand var createCmd1 = new CreateHistoryCommand
{ {
EnvelopeId = 2, EnvelopeId = envelope.Id,
UserReference = "UserX", UserReference = receiver.EmailAddress,
Status = EnvelopeStatus.EnvelopeCreated Status = EnvelopeStatus.AccessCodeRequested
}; };
var createCmd2 = new CreateHistoryCommand var createCmd2 = new CreateHistoryCommand
{ {
EnvelopeId = 2, EnvelopeId = envelope.Id,
UserReference = "UserX", UserReference = receiver.EmailAddress,
Status = EnvelopeStatus.EnvelopePartlySigned Status = EnvelopeStatus.EnvelopeCompletelySigned
}; };
await Mediator.Send(createCmd1); await Mediator.Send(createCmd1, cancel);
await Mediator.Send(createCmd2); await Mediator.Send(createCmd2, cancel);
// Act // Act
var result = await Mediator.Send(new ReadHistoryQuery(2, EnvelopeStatus.EnvelopePartlySigned)); var readQuery = new ReadHistoryQuery()
{
EnvelopeId = envelope.Id,
Status = EnvelopeStatus.EnvelopeCompletelySigned
};
var result = await Mediator.Send(readQuery, cancel);
// Assert // Assert
Assert.That(result, Has.Exactly(1).Items); Assert.That(result, Has.Exactly(1).Items);
Assert.That(result, Has.All.Matches<EnvelopeGenerator.Application.Dto.EnvelopeHistory.EnvelopeHistoryDto>( Assert.That(result, Has.All.Matches<EnvelopeHistoryDto>(r => r.Status == EnvelopeStatus.EnvelopeCompletelySigned));
r => r.Status == EnvelopeStatus.EnvelopePartlySigned));
} }
[Test] [Test]
public async Task ReadHistory_Should_Return_Empty_When_No_Record() public async Task ReadHistory_Should_Return_Empty_When_No_Record()
{ {
// Act // Act
var result = await Mediator.Send(new ReadHistoryQuery(999)); var result = await Mediator.Send(new ReadHistoryQuery()
{
EnvelopeId = 9999
});
// Assert // Assert
Assert.That(result, Is.Empty); Assert.That(result, Is.Empty);