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 UpdateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper); var request = new UpdateHolidayCommand(companyId: 1, holidayId: 1, userId: 1, "Test Holiday", startDate: DateTime.Now.AddDays(-1).Date, endDate: DateTime.Now.Date, teams: null, isForAllTeams: false, isFullDay: false); // Act var result = await validator.ValidateAsync(request); //Assert Assert.False(result.IsValid); }
public async Task Should_KeepHolidayForExistingTeam_When_ChangeTeamId() { // Arrange var entity = new Holiday() { CompanyId = 1, StartDate = DateTime.Now.Date, EndDate = DateTime.Now.Date, Name = "Test Holiday", IsFullDay = true, CreatedAt = DateTime.Now.Date, CreatedBy = -1 }; entity.HolidayTeam.Add(new HolidayTeam() { TeamId = 1 }); _fixture.Context.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 UpdateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper); var request = new UpdateHolidayCommand(companyId: 1, holidayId: 1, userId: 1, name: "Updated Holiday", startDate: DateTime.Now.Date, endDate: DateTime.Now.Date, new List <int> { 1, 2 }, isForAllTeams: false, isFullDay: true); // Act var tcs = new CancellationToken(); var result = await handler.Handle(request, tcs); var team1 = await teamRepository.Queryable().SingleOrDefaultAsync(x => x.CompanyId == 1 && x.TeamId == 1); var team2 = await teamRepository.Queryable().SingleOrDefaultAsync(x => x.CompanyId == 1 && x.TeamId == 2); // Assert Assert.Equal(1, result.ModifiedBy); Assert.Equal(1, result.HolidayId); Assert.Contains(team1.HolidaysTeam, x => x.HolidayId == 1); Assert.Contains(team2.HolidaysTeam, x => x.HolidayId == 1); }
public async Task <ActionResult <HolidayDto> > UpdateTeamAsync(int id, [FromBody] HolidayModel model) { var request = new UpdateHolidayCommand(companyId: _companyId, holidayId: id, userId: _userId, model.Name, model.StartDate, model.EndDate, model.Teams, model.IsFullDay, model.IsForAllTeams); return(Single(await CommandAsync(request))); }
public async Task Should_UpdateHoliday_When_PassValidParameters() { // Arrange var entity = new Holiday() { CompanyId = 1, StartDate = DateTime.Now.Date, EndDate = DateTime.Now.Date, Name = "Test Holiday", IsFullDay = true, CreatedAt = DateTime.Now.Date, CreatedBy = -1 }; entity.HolidayTeam.Add(new HolidayTeam() { TeamId = 1 }); _fixture.Context.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 UpdateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper); var request = new UpdateHolidayCommand(companyId: 1, holidayId: 1, userId: 1, name: "Updated Holiday", DateTime.Now.AddDays(-1).Date, DateTime.Now.AddDays(1).Date, new List <int>() { 1 }, isForAllTeams: true, isFullDay: true); // Act var tcs = new CancellationToken(); var result = await handler.Handle(request, tcs); // Assert Assert.Equal(DateTime.Now.AddDays(-1).Date, result.StartDate); Assert.Equal(DateTime.Now.AddDays(1).Date, result.EndDate); Assert.Equal("Updated Holiday", result.Name); Assert.True(result.IsFullDay); }
public async Task Should_ThrowException_When_ChangeExistingStartDate() { // 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-1 Holiday" }; entity.HolidayTeam.Add(new HolidayTeam() { TeamId = 1 }); _fixture.Context.Holidays.Attach(entity); _fixture.Context.SaveChanges(); 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-2 Holiday" }; 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 UpdateHolidayHandler(unitOfWork, repository, teamRepository, _logger, _mapper); var request = new UpdateHolidayCommand(companyId: 1, holidayId: 1, userId: 1, name: "Test Holiday", startDate: DateTime.Now.AddDays(1).Date, endDate: DateTime.Now.AddDays(1).Date, teams: null, isForAllTeams: true, isFullDay: false); // 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); }