예제 #1
0
        public async Task Should_CreateHolidayForTeam_When_PassTeamId()
        {
            // Arrange
            IUnitOfWork           unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Holiday> repository     = new Repository <Holiday>(_fixture.Context);
            IRepository <Team>    teamRepository = new Repository <Team>(_fixture.Context);

            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   new List <int> {
                1
            },
                                                   DateTime.Now.Date,
                                                   DateTime.Now.Date,
                                                   "Test Holiday",
                                                   isForAllTeams: false,
                                                   isFullDay: true);

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

            var team = teamRepository.Queryable().SingleOrDefault(x => x.CompanyId == 1 && x.TeamId == 1);

            // Assert
            Assert.Equal(1, result.CreatedBy);
            Assert.Equal(1, result.HolidayId);
            Assert.Contains(team.HolidaysTeam, x => x.HolidayId == 1);
        }
예제 #2
0
        public async Task Should_CreateHoliday_When_PassValidParameters()
        {
            // Arrange
            IUnitOfWork           unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Holiday> repository     = new Repository <Holiday>(_fixture.Context);
            IRepository <Team>    teamRepository = new Repository <Team>(_fixture.Context);
            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   new List <int>()
            {
                1
            },
                                                   DateTime.Now.Date,
                                                   DateTime.Now.Date,
                                                   "Test Holiday",
                                                   isForAllTeams: false,
                                                   isFullDay: true);

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

            // Assert
            Assert.Equal(1, result.CreatedBy);
            Assert.Equal(1, result.HolidayId);
        }
예제 #3
0
        public async Task Should_CreateHolidayForAllTeams_When_SetIsForAllTeamsParameter()
        {
            // Arrange
            IUnitOfWork           unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Holiday> repository     = new Repository <Holiday>(_fixture.Context);
            IRepository <Team>    teamRepository = new Repository <Team>(_fixture.Context);

            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   null,
                                                   DateTime.Now.Date,
                                                   DateTime.Now.Date,
                                                   "Test Holiday",
                                                   isForAllTeams: true,
                                                   isFullDay: true);

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

            var team = teamRepository.Queryable().Where(x => x.CompanyId == 1).ToList();

            // Assert
            Assert.Equal(1, result.CreatedBy);
            Assert.Equal(1, result.HolidayId);
            Assert.All <Team>(team, x =>
            {
                Assert.Contains(x.HolidaysTeam, x => x.HolidayId == 1);
            });
        }
예제 #4
0
        public async Task Should_ThrowException_When_PassExistingStartDateForOneTeam()
        {
            // Arrange
            var entity = new Holiday()
            {
                CompanyId = 1,
                IsFullDay = true,
                CreatedAt = DateTime.Now,
                CreatedBy = -1,
                StartDate = DateTime.Now.AddDays(-1).Date,
                EndDate   = DateTime.Now.AddDays(-1).Date,
                Name      = "Mock Holiday"
            };

            entity.HolidayTeam = new List <HolidayTeam>();
            entity.HolidayTeam.Add(new HolidayTeam()
            {
                TeamId = 1
            });

            _fixture.Context.Holidays.Attach(entity);
            _fixture.Context.SaveChanges();

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

            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   new List <int> {
                1
            },
                                                   DateTime.Now.AddDays(-1).Date,
                                                   DateTime.Now.AddDays(-1).Date,
                                                   "Test Holiday",
                                                   isForAllTeams: false,
                                                   isFullDay: true);

            // Act
            var tcs = new CancellationToken();

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

            Assert.Equal(ExceptionMessages.HolidayAlreadyExistForSameDate, exception.Message);
            Assert.Equal(400, exception.Code);
        }
예제 #5
0
        public async Task Should_CreateHoliday_When_PassNotExistingStartDateForTeam()
        {
            // Arrange
            var entity = new Holiday()
            {
                CompanyId = 1,
                IsFullDay = true,
                CreatedAt = DateTime.Now,
                CreatedBy = -1,
                StartDate = DateTime.Now.AddDays(-1).Date,
                EndDate   = DateTime.Now.AddDays(-1).Date,
                Name      = "Mock Holiday"
            };

            entity.HolidayTeam = new List <HolidayTeam>();
            entity.HolidayTeam.Add(new HolidayTeam()
            {
                TeamId = 1
            });

            _fixture.Context.Holidays.Attach(entity);
            _fixture.Context.SaveChanges();

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

            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   new List <int> {
                2
            },
                                                   DateTime.Now.AddDays(-1).Date,
                                                   DateTime.Now.AddDays(-1).Date,
                                                   "Test Holiday",
                                                   isForAllTeams: false,
                                                   isFullDay: true);

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

            var team = teamRepository.Queryable().SingleOrDefault(x => x.TeamId == 2);

            // Assert
            Assert.Equal(1, result.CreatedBy);
            Assert.Equal("Test Holiday", result.Name);
            Assert.Contains(team.HolidaysTeam, x => x.HolidayId == result.HolidayId);
        }
예제 #6
0
        public async Task Should_ValidatorReturnFalse_When_PassEmptyListForIsFullTeamFalse()
        {
            HolidayCommandValidator validator = new HolidayCommandValidator();
            // Arrange
            IUnitOfWork           unitOfWork     = new UnitOfWork(_fixture.Context);
            IRepository <Holiday> repository     = new Repository <Holiday>(_fixture.Context);
            IRepository <Team>    teamRepository = new Repository <Team>(_fixture.Context);
            var handler = new CreateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper);

            var request = new CreateHolidayCommand(companyId: 1,
                                                   userId: 1,
                                                   null,
                                                   endDate: DateTime.Now.Date,
                                                   startDate: DateTime.Now.Date,
                                                   "Test Holiday",
                                                   isForAllTeams: false,
                                                   isFullDay: true);

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

            //Assert
            Assert.False(result.IsValid);
        }