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); }
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); }
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); }); }
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); }
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); }
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); }