public void Setup() { repository = Substitute.For <IDbRepository>(); var auditTrailWriter = Substitute.For <IAuditTrailWriter>(); sut = new CreateOrganizationCommandHandler(repository, auditTrailWriter); }
public async Task CreateOrganizationCommandHandler_ShouldCreateOrganizationAndBindToUser() { var user = Fixture.Build <CreateUserCommand>().Create(); var userHandler = new CreateUserCommandHandler(Context, _mapper); var resultUser = await userHandler.Handle(user); await Context.SaveChangesAsync(); var organization = Fixture.Build <CreateOrganizationCommand>().With(x => x.CreatedBy, resultUser.Id).Create(); var organizationHandler = new CreateOrganizationCommandHandler(Context, _mapper); await organizationHandler.Handle(organization); await Context.SaveChangesAsync(); var createdOrganization = await Context.Organizations.SingleAsync(new FindByIdSpecification <Organization>(organization.Id) .ToExpression()); createdOrganization.Should().NotBeNull(); createdOrganization.CreatedBy.Id.Should().Be(user.Id); var createdUser = await Context.Users.SingleAsync(new FindByIdSpecification <User>(user.Id).ToExpression()); createdUser.Should().NotBeNull(); createdUser.UserOrganizations.Should().HaveCount(1); createdUser.UserOrganizations.First().Organization.Id.Should().Be(organization.Id); createdUser.UserOrganizations.First().User.Id.Should().Be(user.Id); }
public async Task CreateOrganizationCommandValidationTests_ShouldFailedForUsersWhoCreatedOrganizations() { var user = Fixture.Build <CreateUserCommand>().Create(); var userHandler = new CreateUserCommandHandler(Context, _mapper); var resultUser = await userHandler.Handle(user); await Context.SaveChangesAsync(); var organization = Fixture.Build <CreateOrganizationCommand>().With(x => x.CreatedBy, resultUser.Id).Create(); var organizationHandler = new CreateOrganizationCommandHandler(Context, _mapper); await organizationHandler.Handle(organization); await Context.SaveChangesAsync(); var newOrganization = Fixture.Build <CreateOrganizationCommand>().With(x => x.CreatedBy, resultUser.Id).Create(); var validator = new CreateOrganizationCommandValidator(Context); var validationResult = await validator.TestValidateAsync(newOrganization); validationResult.Errors.Should().HaveCount(1); validationResult.ShouldHaveValidationErrorFor(u => u.CreatedBy); }
public async Task DisableOrganizationCommandHandler_ShouldDisableOrganization() { var user = Fixture.Build <CreateUserCommand>().Create(); var userHandler = new CreateUserCommandHandler(Context, _mapper); var resultUser = await userHandler.Handle(user); await Context.SaveChangesAsync(); var organization = Fixture.Build <CreateOrganizationCommand>().With(x => x.CreatedBy, resultUser.Id).Create(); var organizationHandler = new CreateOrganizationCommandHandler(Context, _mapper); await organizationHandler.Handle(organization); await Context.SaveChangesAsync(); var createdOrganization = await Context.Organizations.SingleAsync(new FindByIdSpecification <Organization>(organization.Id) .ToExpression()); createdOrganization.Should().NotBeNull(); createdOrganization.CreatedBy.Id.Should().Be(user.Id); var createdUser = await Context.Users.SingleAsync(new FindByIdSpecification <User>(user.Id).ToExpression()); createdUser.Should().NotBeNull(); createdUser.UserOrganizations.Should().HaveCount(1); createdUser.UserOrganizations.First().Organization.Id.Should().Be(organization.Id); createdUser.UserOrganizations.First().User.Id.Should().Be(user.Id); var disableOrganizationCommand = Fixture.Build <DisableOrganizationCommand>() .With(x => x.Id, createdOrganization.Id) .With(x => x.ModifyBy, createdUser.Id) .Create(); var disableOrganizationCommandHandler = new DisableOrganizationCommandHandler(Context); await disableOrganizationCommandHandler.Handle(disableOrganizationCommand); await Context.SaveChangesAsync(); createdOrganization = await Context.Organizations.SingleOrDefaultAsync(new FindByIdSpecification <Organization>(organization.Id).And(new FindActiveSpecification <Organization>()) .ToExpression()); createdOrganization.Should().BeNull(); createdUser = await Context.Users.SingleAsync(new FindByIdSpecification <User>(user.Id).ToExpression()); createdUser.Should().NotBeNull(); //TODO: Many-to-Many relationships doesn't clear in unit test but correct work in integration test. SO: https://stackoverflow.com/questions/56736652/efcore-unable-to-remove-many-to-many-relation-in-memory-sqlite-but-works-in-pro //createdUser.UserOrganizations.Should().BeEmpty(); }
public async Task Handle_Success(CreateOrganizationCommand orgDto, Mock <ILogger <CreateOrganizationCommandHandler> > logger) { //Arrange var workerService = new Mock <IOrganizationWorkerService>(); workerService.Setup(x => x.AddOrganization(It.IsAny <OrganizationDto>())); var system = new CreateOrganizationCommandHandler(workerService.Object, logger.Object); //Act await system.Handle(orgDto); //Assert workerService.Verify(x => x.AddOrganization(It.IsAny <OrganizationDto>()), Times.Once); }
public void Setup() { repository = Substitute.For<IDbRepository>(); var auditTrailWriter = Substitute.For<IAuditTrailWriter>(); sut = new CreateOrganizationCommandHandler(repository, auditTrailWriter); }