public static async Task Does_not_save_reservations_outside_active_date_range() { var activeDates = new[] { 2.February(2021), 3.February(2021) }; var mockReservationRepository = CreateReservationRepository.MockWithReservations(activeDates, new List <Reservation>()); mockReservationRepository .Setup(r => r.SaveReservations( It.IsAny <IReadOnlyCollection <Reservation> >(), It.IsAny <IReadOnlyCollection <User> >())) .Returns(Task.CompletedTask); var patchRequest = new ReservationsPatchRequest(new[] { new ReservationsPatchRequestDailyData(1.February(2021), new List <string> { "User1", "User2" }), new ReservationsPatchRequestDailyData(4.February(2021), new List <string> { "User1", "User2" }), }); var controller = new ReservationsController( CreateConfigurationRepository.WithDefaultConfiguration(), CreateDateCalculator.WithActiveDates(activeDates), mockReservationRepository.Object, CreateUserRepository.WithUsers(DefaultUsers)); await controller.PatchAsync(patchRequest); CheckSavedReservations(mockReservationRepository, new List <Reservation>()); }
public async Task <IActionResult> PatchAsync([FromBody] ReservationsPatchRequest request) { var activeDates = this.dateCalculator.GetActiveDates(); var reservations = request.Reservations .Where(r => activeDates.Contains(r.LocalDate)) .SelectMany(CreateReservations) .ToList(); var users = await this.userRepository.GetUsers(); await this.reservationRepository.SaveReservations(reservations, users); var response = await this.GetReservations(); return(this.Ok(response)); }
public static async Task Returns_updated_reservations_after_saving() { var activeDates = new[] { 2.February(2021), 3.February(2021) }; var returnedReservations = new[] { new Reservation("User1", 2.February(2021)), new Reservation("User2", 2.February(2021)), new Reservation("User2", 3.February(2021)), new Reservation("User3", 3.February(2021)), }; var mockReservationRepository = CreateReservationRepository.MockWithReservations(activeDates, returnedReservations); mockReservationRepository .Setup(r => r.SaveReservations( It.IsAny <IReadOnlyCollection <Reservation> >(), It.IsAny <IReadOnlyCollection <User> >())) .Returns(Task.CompletedTask); var patchRequest = new ReservationsPatchRequest(new[] { new ReservationsPatchRequestDailyData(2.February(2021), new[] { "User1", "User2" }) }); var controller = new ReservationsController( CreateConfigurationRepository.WithDefaultConfiguration(), CreateDateCalculator.WithActiveDates(activeDates), mockReservationRepository.Object, CreateUserRepository.WithUsers(DefaultUsers)); var result = await controller.PatchAsync(patchRequest); var resultValue = GetResultValue <ReservationsResponse>(result); var day1Data = GetDailyData(resultValue.Reservations, 2.February(2021)); var day2Data = GetDailyData(resultValue.Reservations, 3.February(2021)); Assert.Equal(new[] { "User1", "User2" }, day1Data.UserIds); Assert.Equal(new[] { "User2", "User3" }, day2Data.UserIds); }