コード例 #1
0
        public void Setup()
        {
            repository = Substitute.For <IDbRepository>();
            var auditTrailWriter = Substitute.For <IAuditTrailWriter>();

            sut = new CreateOrganizationCommandHandler(repository, auditTrailWriter);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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);
 }