public void user_project_command_failed() { //given var fixture = new Fixture().Customize(new AutoNSubstituteCustomization { ConfigureMembers = true }); fixture.Customizations.Add(new RandomNumericSequenceGenerator(long.MinValue, -1)); fixture.Register <Money>(() => Money.From(fixture.Create <Decimal>())); fixture.Register <EntityId>(() => EntityId.Empty()); fixture.Register <ProjectName>(() => ProjectName.Empty()); fixture.Register <ProjectCode>(() => ProjectCode.Empty()); fixture.Register <DateAndTime>(() => DateAndTime.Empty()); fixture.Register <Money>(() => fixture.Create <Money>()); var command = new AddProjectCommand(); var mediator = fixture.Create <IMediator>(); var logger = fixture.Create <ILogger <AddProjectCommandHandler> >(); var projectDb = fixture.Create <IDbSession <IProjectRepository> >(); var userDb = fixture.Create <IDbSession <IUserRepository> >(); // when var handler = new AddProjectCommandHandler(logger, mediator, projectDb, userDb); var result = handler.Execute(command); // then Assert.True(!result.IsSucceed && result.Violations.Count == 4); }
public void project_add_command_succed() { var fixture = new Fixture().Customize(new AutoNSubstituteCustomization { ConfigureMembers = true }); fixture.Register <EntityId>(() => EntityId.From(fixture.Create <Guid>())); fixture.Register <ProjectName>(() => ProjectName.From(fixture.Create <string>())); fixture.Register <ProjectCode>(() => ProjectCode.From(fixture.Create <string>())); fixture.Register <DateAndTime>(() => DateAndTime.From(fixture.Create <DateTime>())); fixture.Register <ProjectStatus>(() => ProjectStatus.Default()); fixture.Register <ServiceOrderNumber>(() => ServiceOrderNumber.Empty()); fixture.Register <Email>(() => Email.From(string.Format($"{fixture.Create<string>()}@teste.com"))); fixture.Register <Project>(() => Project.NewRequest(fixture.Create <EntityId>(), fixture.Create <ProjectName>(), fixture.Create <ProjectCode>(), fixture.Create <DateAndTime>(), fixture.Create <Money>(), fixture.Create <EntityId>())); fixture.Register <User>(() => User.From(fixture.Create <EntityId>(), fixture.Create <Name>(), fixture.Create <SocialSecurityId>(), fixture.Create <Email>(), fixture.Create <Version>())); var finalProject = fixture.Create <Project>(); var finalClient = fixture.Create <User>(); var command = fixture.Build <AddProjectCommand>() .With(project => project.Name, finalProject.Name.Value) .With(project => project.Code, finalProject.Code.Value) .With(project => project.Budget, finalProject.Budget.Value) .With(project => project.ClientId, finalProject.ClientId.Value) .With(project => project.StartDate, finalProject.StartDate.Value) .Create(); var mediator = fixture.Create <IMediator>(); var logger = fixture.Create <ILogger <AddProjectCommandHandler> >(); var projectDb = fixture.Create <IDbSession <IProjectRepository> >(); var userDb = fixture.Create <IDbSession <IUserRepository> >(); var handler = new AddProjectCommandHandler(logger, mediator, projectDb, userDb); var result = handler.Execute(command); userDb.Received().Repository.Get(finalProject.ClientId).Returns(finalClient); projectDb.Received().Repository.Add(finalProject); projectDb.Received().SaveChanges(); mediator.Received(1).Publish(Arg.Any <ProjectAddedEvent>()); Assert.True(result.IsSucceed); }