Exemple #1
0
        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>());
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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);
        }