public void AddAddress_Should_ReturnFail_When_AddressExists() { var line = string.Join(string.Empty, _fixture.CreateMany <char>(100)); var postCode = string.Join(string.Empty, _fixture.CreateMany <char>(10)); var number = Math.Abs(_fixture.Create <int>()); var user = _fixture.Build <User>() .With(x => x.Addresses, new List <Address> { _fixture.Build <Address>() .With(x => x.Line, line) .With(x => x.Number, number) .With(x => x.PostCode, postCode) .Create() }) .Create(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.AddAddress(line, number, postCode); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.AddressError.AddressAlreadyExist); }
public void AddPhone_Should_ReturnFail_When_NumberIsNull(string number) { var user = _fixture.Create <User>(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.AddPhone(number); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.PhoneError.MissingNumber); }
public void Update_Should_ReturnFail_When_LastNamesIsMissing(string lastName) { var firstName = _fixture.Create <string>().Substring(0, 20); var years = DateTime.Now.Subtract(TimeSpan.FromDays(365 * 20)); var root = new UserAggregationRoot(new UserState(new User()), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.Update(firstName, lastName, years); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.UserError.MissingLastNames); }
public void RemoveAddress_Should_ReturnAddressNotFound_When_AddressDoesNotExist() { var user = _fixture.Create <User>(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.RemoveAddress(_fixture.Create <Guid>()); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.AddressError.AddressNotFound); }
public void AddPhone_Should_ReturnOk() { var user = _fixture.Create <User>(); var number = string.Join(string.Empty, _fixture.CreateMany <char>(14)); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.AddPhone(number); result.Should().NotBeNull(); result.Should().BeEquivalentTo(Result.Ok()); }
public void Update_Should_ReturnFail_When_FirstNameIsInvalid() { var firstName = string.Join(string.Empty, _fixture.CreateMany <char>(101)); var lastName = _fixture.Create <string>(); var years = DateTime.Now.Subtract(TimeSpan.FromDays(365 * 20)); var root = new UserAggregationRoot(new UserState(new User()), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.Update(firstName, lastName, years); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.UserError.InvalidFirstName); }
public void Create_Should_ReturnOk() { var email = $"{_fixture.Create<string>()}@example.com"; var firstName = _fixture.Create <string>().Substring(0, 20); var lastName = _fixture.Create <string>(); var years = DateTime.Now.Subtract(TimeSpan.FromDays(365 * 20)); var root = new UserAggregationRoot(new UserState(new User()), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.Create(email, firstName, lastName, years); result.Should().NotBeNull(); result.Should().BeEquivalentTo(Result.Ok()); }
public void AddAddress_Should_ReturnFail_When_PostCodeIsMissing(string postCode) { var user = _fixture.Create <User>(); var line = string.Join(string.Empty, _fixture.CreateMany <char>(100)); var number = Math.Abs(_fixture.Create <int>()); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.AddAddress(line, number, postCode); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.AddressError.MissingPostCode); }
protected override ExecutionResult ExecuteCommand(RemoveUserCommand command) { var user = _userDb.Repository.Get(EntityId.From(command.Id)); var agg = UserAggregationRoot.ReconstructFrom(user); var isSucceed = false; if (agg.ValidationResults.IsValid) { agg.Remove(); _userDb.Repository.Remove(agg.GetChange()); _userDb.SaveChanges(); agg.GetEvents().ToImmutableList().ForEach(ev => Publisher.Publish(ev)); isSucceed = true; } return(new ExecutionResult(isSucceed, agg.ValidationResults.Errors.ToImmutableList())); }
public void user_aggregate_create() { var fixture = new Fixture(); fixture.Register <EntityId>(() => EntityId.From(fixture.Create <Guid>())); fixture.Register <Name>(() => Name.From(fixture.Create <string>())); fixture.Register <SocialSecurityId>(() => SocialSecurityId.From(fixture.Create <string>())); fixture.Register <Email>(() => Email.From(string.Format($"{fixture.Create<string>()}@teste.com"))); fixture.Register <UserAggregationRoot>( () => UserAggregationRoot.CreateFrom(fixture.Create <Name>(), fixture.Create <SocialSecurityId>(), fixture.Create <Email>())); var agg = fixture.Create <UserAggregationRoot>(); Assert.True(agg.ValidationResults.IsValid); }
public void AddPhone_Should_ReturnFail_When_NumberAlreadyAdded() { var number = string.Join(string.Empty, _fixture.CreateMany <char>(14)); var user = _fixture.Build <User>() .With(x => x.Phones, new HashSet <Phone> { new Phone { Number = number } }) .Create(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.AddPhone(number); result.Should().NotBeNull(); result.Should().BeEquivalentTo(DomainError.PhoneError.NumberAlreadyExist); }
protected override async Task <CommandResult <Guid> > ExecuteCommand(AddUserCommand command, CancellationToken cancellationToken) { var agg = UserAggregationRoot.CreateFrom(command.Name); var isSucceed = false; var okId = Guid.Empty; if (agg.IsValid) { _dbSession.Repository.Add(agg.GetChange()); await _dbSession.SaveChangesAsync(); agg.GetEvents().ToImmutableList() .ForEach(ev => Publisher.Publish(ev)); isSucceed = true; okId = agg.GetChange().Identity.Value; } return(await Task.FromResult(new CommandResult <Guid>(isSucceed, okId, agg.Failures))); }
public void RemovePhone_Should_ReturnOk() { var number = _fixture.Create <string>(); var user = _fixture.Build <User>() .With(x => x.Phones, new HashSet <Phone> { new Phone { Number = number } }) .Create(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.RemovePhone(number); result.Should().NotBeNull(); result.Should().BeEquivalentTo(Result.Ok()); }
public void RemoveAddress_Should_ReturnOk() { var addressId = _fixture.Create <Guid>(); var user = _fixture.Build <User>() .With(x => x.Addresses, new List <Address> { new Address { Id = addressId } }) .Create(); var root = new UserAggregationRoot(new UserState(user), Enumerable.Empty <IAggregationRootInterceptor <UserState, Guid> >(), Substitute.For <ILogger <UserAggregationRoot> >()); var result = root.RemoveAddress(addressId); result.Should().NotBeNull(); result.Should().BeEquivalentTo(Result.Ok()); }
protected override CommandResult <Guid> ExecuteCommand(AddUserCommand command) { var agg = UserAggregationRoot.CreateFrom( Name.From(command.Name), SocialSecurityId.From(command.Cnpj), Email.From(command.CommercialEmail)); var isSucceed = false; var okId = Guid.Empty; if (agg.ValidationResults.IsValid) { _dbSession.Repository.Add(agg.GetChange()); _dbSession.SaveChanges(); agg.GetEvents().ToImmutableList() .ForEach(ev => Publisher.Publish(ev)); isSucceed = true; okId = agg.GetChange().Id.Value; } return(new CommandResult <Guid>(isSucceed, okId, agg.ValidationResults.Errors.ToImmutableList())); }