public async Task Add_WhenModelIsValid_ShouldRedirectToConfirm()
        {
            var input       = new ReservationViewModel();
            var reservation = new Reservation {
                ReservationId = 1
            };

            reservationServiceMock.Setup(s => s.AddAsync(input.Reservation))
            .ReturnsAsync(reservation);
            var controllerContext = ControllerContextProvider.GetDefault();
            var controller        = new ReservationsController(reservationServiceMock.Object, roomServiceMock.Object)
            {
                ControllerContext = controllerContext
            };

            var result = await controller.Add(input);

            var redirectResult      = Assert.IsType <RedirectToActionResult>(result);
            int resultReservationId = (int)redirectResult.RouteValues[nameof(reservation.ReservationId)];

            Assert.Null(redirectResult.ControllerName);
            Assert.Equal(nameof(controller.Confirm), redirectResult.ActionName);
            Assert.Equal(reservation.ReservationId, resultReservationId);
            reservationServiceMock.Verify(s => s.AddAsync(input.Reservation), Times.Once);
        }
        public async Task Add_WhenModelIsInvalid_ShouldReturnView()
        {
            var input      = new ReservationViewModel();
            var controller = new ReservationsController(reservationServiceMock.Object, roomServiceMock.Object);

            controller.ModelState.AddModelError("GuestNames", "Required");

            var result = await controller.Add(input);

            Assert.IsType <ViewResult>(result);
        }