Exemplo n.º 1
0
        public async Task Should_ThrowException_When_PassInvalidUserId()
        {
            // Arrange
            IUnitOfWork        unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Team> repository     = new Repository <Team>(_fixture.Context);
            IRepository <User> userRepository = new Repository <User>(_fixture.Context);

            var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper);

            var request = new CreateTeamCommand(companyId: 1,
                                                userId: 1,
                                                "Test Team",
                                                members: new List <int>()
            {
                -11, 2
            },
                                                approvers: new List <int>()
            {
                1
            });

            // Act
            var tcs = new CancellationToken();

            // Assert
            var exception = await Assert.ThrowsAsync <VacationTrackingException>(async() =>
            {
                var result = await handler.Handle(request, tcs);
            });

            Assert.Equal(ExceptionMessages.InvalidUserId, exception.Message);
            Assert.Equal(400, exception.Code);
        }
Exemplo n.º 2
0
        public async Task Should_CreateTeam_When_PassValidParameters()
        {
            // Arrange
            IUnitOfWork        unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Team> repository     = new Repository <Team>(_fixture.Context);
            IRepository <User> userRepository = new Repository <User>(_fixture.Context);

            var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper);

            var request = new CreateTeamCommand(companyId: 1,
                                                userId: 1,
                                                "Test Team",
                                                members: new List <int>()
            {
                1, 2
            },
                                                approvers: new List <int>()
            {
                1
            });

            // Act
            var tcs    = new CancellationToken();
            var result = await handler.Handle(request, tcs);

            // Assert
            Assert.Equal("Test Team", result.TeamName);
            Assert.Equal(2, result.TeamMembers.Count(x => x.IsMember));
            Assert.Equal(1, result.TeamMembers.Count(x => x.IsApprover));
            Assert.Equal(1, result.CreatedBy);
        }
Exemplo n.º 3
0
        public async Task Should_ValidatorReturnFalse_When_EmptyApprover()
        {
            TeamCommandValidator validator = new TeamCommandValidator();
            // Arrange

            IUnitOfWork        unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Team> repository     = new Repository <Team>(_fixture.Context);
            IRepository <User> userRepository = new Repository <User>(_fixture.Context);

            var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper);

            var request = new CreateTeamCommand(companyId: 1,
                                                userId: 1,
                                                "Test Team",
                                                members: new List <int>()
            {
                1, 2
            },
                                                approvers: new List <int>()
            {
                1
            });

            // Act
            var result = await validator.ValidateAsync(request);

            //Assert
            Assert.True(result.IsValid);
        }
Exemplo n.º 4
0
        public async Task Should_ThrowException_When_PassExistingTeamName()
        {
            // Arrange
            var team = new Team()
            {
                TeamName  = "Test Team",
                CompanyId = 1,
                CreatedAt = DateTime.UtcNow,
                CreatedBy = -1
            };

            team.TeamMembers.Add(new TeamMember()
            {
                IsApprover = true,
                IsMember   = true,
                UserId     = 1
            });
            _fixture.Context.Teams.Attach(team);
            await _fixture.Context.SaveChangesAsync();

            IUnitOfWork        unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Team> repository     = new Repository <Team>(_fixture.Context);
            IRepository <User> userRepository = new Repository <User>(_fixture.Context);

            var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper);

            var request = new CreateTeamCommand(companyId: 1,
                                                userId: 1,
                                                "Test Team",
                                                members: new List <int>()
            {
                1, 2
            },                                                                     // UserId: 3 belongs to companyId: 1
                                                approvers: new List <int>()
            {
                1
            });

            // Act
            var tcs = new CancellationToken();

            // Assert
            var exception = await Assert.ThrowsAsync <VacationTrackingException>(async() =>
            {
                var result = await handler.Handle(request, tcs);
            });

            Assert.Equal(ExceptionMessages.TeamNameAlreadyExist, exception.Message);
            Assert.Equal(400, exception.Code);
        }
Exemplo n.º 5
0
        public async Task Should_CreateTeam_When_PassValidUserIdForDifferentTeam()
        {
            // Arrange
            var team = new Team()
            {
                TeamName  = "Test Team",
                CompanyId = 1,
                CreatedAt = DateTime.UtcNow,
                CreatedBy = -1
            };

            team.TeamMembers.Add(new TeamMember()
            {
                IsApprover = true,
                IsMember   = true,
                UserId     = 1
            });
            _fixture.Context.Teams.Attach(team);
            await _fixture.Context.SaveChangesAsync();

            IUnitOfWork        unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Team> repository     = new Repository <Team>(_fixture.Context);
            IRepository <User> userRepository = new Repository <User>(_fixture.Context);

            var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper);

            var request = new CreateTeamCommand(companyId: 1,
                                                userId: 1,
                                                "Test Team - 2",
                                                members: new List <int>()
            {
                1, 2
            },
                                                approvers: new List <int>()
            {
                1
            });

            // Act
            var tcs    = new CancellationToken();
            var result = await handler.Handle(request, tcs);

            var user = await userRepository.Queryable().SingleOrDefaultAsync(x => x.UserId == 1);

            // Assert
            Assert.Equal(2, user.TeamMembers.Count);
        }