using MyTelegram.Domain.Sagas.Events; namespace MyTelegram.Domain.Tests.UnitTests.Sagas; public class UserSignInSagaTests : TestsFor { private readonly Mock _sagaContext; public UserSignInSagaTests() { Fixture.Customize(c => c.FromFactory(() => AppCodeId.Create("0", "0"))); Fixture.Customize(c => c.FromFactory(() => new SignInSagaId($"signinsagaid-{Guid.Empty}"))); _sagaContext = InjectMock(); //var idGenerator = InjectMock(); //IdGeneratorFactory.SetDefaultIdGenerator(idGenerator.Object); } [Fact] public async Task SignIn_With_Invalid_PhoneCode_Throws_Exception() { var aggregateEvent = new CheckSignInCodeCompletedEvent(A(), false, 1); var domainEvent = ADomainEvent(aggregateEvent, A(), 1); var exception = await Assert.ThrowsAsync(async () => await Sut.HandleAsync(domainEvent, _sagaContext.Object, CancellationToken.None).ConfigureAwait(false)); exception.RpcError.ShouldBe(RpcErrors.RpcErrors400.PhoneCodeInvalid); } [Fact] public async Task SignIn_With_Correct_PhoneCode_Success() { var aggregateEvent = new CheckSignInCodeCompletedEvent(A(), true, 1); var domainEvent = ADomainEvent(aggregateEvent, A(), 1); await Sut.HandleAsync(domainEvent, _sagaContext.Object, CancellationToken.None).ConfigureAwait(false); Sut.UncommittedEvents.Single().AggregateEvent.ShouldBeOfType(); } }