public async Task EditPost_InconsistentInput_ReturnsNotFoundResult()
        {
            // Arrange
            var reservation = new Reservation {
                ReservationId = 2, CustomerId = 2, MembershipId = 2, Details = "something new"
            };

            reservationRepoMock = new Mock <IReservationRepository>();
            reservationRepoMock
            .Setup(repo => repo.UpdateAsync(reservation))
            .Returns(Task.FromResult(1));
            var controller = new ReservationsController(reservationRepoMock.Object);

            // Act
            var result = await controller.Edit(1, reservation);

            // Assert
            var redirectToActionResult = result.Should().BeOfType <NotFoundResult>();
        }
        public async Task EditPost_InvalidModelState_ReturnsNotFoundResult()
        {
            // Arrange
            var reservation = new Reservation {
                ReservationId = 2
            };

            reservationRepoMock = new Mock <IReservationRepository>();
            reservationRepoMock
            .Setup(repo => repo.UpdateAsync(reservation))
            .Returns(Task.FromResult(1));
            var controller = new ReservationsController(reservationRepoMock.Object);

            controller.ModelState.AddModelError("Details", "Length too large");

            // Act
            var result = await controller.Edit(2, reservation);

            // Assert
            var viewResult = result.Should().BeOfType <ViewResult>();
            var model      = (Reservation)viewResult.Subject.Model;

            model.Should().Be(reservation);
        }
        public void Edit_RedirectsWhenInputDataIsIncorrect()
        {
            var result = _controller.Edit(-1) as NotFoundResult;

            Assert.AreEqual(404, result.StatusCode);
        }