using DigitalData.UserManager.Domain.Entities; using EnvelopeGenerator.Application.Envelopes.Commands; using EnvelopeGenerator.Application.Histories.Commands; using EnvelopeGenerator.Application.Histories.Queries; using EnvelopeGenerator.Domain.Constants; namespace EnvelopeGenerator.Tests.Application; [TestFixture] public class HistoryTests { private Fake.Host _host; [SetUp] public async Task Setup() { _host = Fake.CreateHost(); await _host.AddSamples(); } [TearDown] public void TearDown() { _host.Dispose(); } [Test] public async Task CreateHistory_And_ReadHistory_Should_Work() { // Arrange var createEnvelopeCmd = Fake.Provider.CreateEnvelopeCommand(_host.User.Id); var envelope = await _host.Mediator.Send(createEnvelopeCmd); var key = string.Empty; var createCmd = Fake.Provider.CreateHistoryCommand(key); // Act var id = await _host.Mediator.Send(createCmd); // Assert Assert.That(id, Is.Not.Null); // ReadHistory query var query = new ReadHistoryQuery(1); var result = await _host.Mediator.Send(query); Assert.That(result, Is.Not.Empty); } [Test] public async Task ReadHistory_Should_Filter_By_Status() { // Arrange var createCmd1 = new CreateHistoryCommand { EnvelopeId = 2, UserReference = "UserX", Status = EnvelopeStatus.EnvelopeCreated }; var createCmd2 = new CreateHistoryCommand { EnvelopeId = 2, UserReference = "UserX", Status = EnvelopeStatus.EnvelopePartlySigned }; await _host.Mediator.Send(createCmd1); await _host.Mediator.Send(createCmd2); // Act var result = await _host.Mediator.Send(new ReadHistoryQuery(2, EnvelopeStatus.EnvelopePartlySigned)); // Assert Assert.That(result, Has.Exactly(1).Items); Assert.That(result, Has.All.Matches( r => r.Status == EnvelopeStatus.EnvelopePartlySigned)); } [Test] public async Task ReadHistory_Should_Return_Empty_When_No_Record() { // Act var result = await _host.Mediator.Send(new ReadHistoryQuery(999)); // Assert Assert.That(result, Is.Empty); } }