namespace MyTelegram.Domain.Tests.UnitTests.Aggregates.User; public class UserAggregateTests : TestsFor { public UserAggregateTests() { Fixture.Customize(c => c.FromFactory(() => UserId.Create(1))); } [Fact] public void Create_User_With_Exists_PhoneNumber_Throws_Exception() { var aggregateEvent = A(); var domainEvent = ADomainEvent(aggregateEvent, 1); Sut.ApplyEvents(new[] { domainEvent }); Assert.Throws(() => Sut.Create(A(), 1, 0, aggregateEvent.PhoneNumber, "0")); } [Fact] public void Create_New_User_Success() { var phoneNumber = "0"; var firstName = "0"; var userId = 1; var accessHash = 1; Sut.Create(A(), userId, accessHash, phoneNumber, firstName); Sut.Version.ShouldBe(1); Sut.UncommittedEvents.Count().ShouldBe(1); var uncommittedEvent = Sut.UncommittedEvents.Single(); var userCreatedEvent = uncommittedEvent.AggregateEvent.ShouldBeOfType(); userCreatedEvent.PhoneNumber.ShouldBe(phoneNumber); userCreatedEvent.UserId.ShouldBe(userId); userCreatedEvent.FirstName.ShouldBe(firstName); userCreatedEvent.AccessHash.ShouldBe(accessHash); userCreatedEvent.Bot.ShouldBeFalse(); } [Fact] public void Create_User_With_Empty_FirstName_Throws_Exception() { Assert.Throws(() => Sut.Create(A(), 1, 0, "0", string.Empty)); } }