private async Task TestCreatePOST()
        {
            // Arrange
            var id       = Guid.Empty;
            var showroom = GetShowroom();
            var car      = GetCar();
            var model    = GetCarEditViewModel(car);

            MockMapper
            .Setup(_ => _.Map <Car>(model))
            .Returns(car);

            MockShowroomData
            .Setup(_ => _.GetById(model.ShowroomId))
            .ReturnsAsync(showroom);

            // Act
            //ControllerUnderTest.ModelState.AddModelError("key", "error"); // force invalid input
            dynamic response = await ControllerUnderTest.Create(model);

            // Assert
            MockShowroomData.Verify(_ => _.GetById(model.ShowroomId), Times.Once);
            MockMapper.Verify(_ => _.Map <Car>(model), Times.Once);

            Assert.True(response.RouteValues.Values[0].Equals(car.Id));
            Assert.True(response.ActionName.Equals("Details"));
        }
        private async Task TestCreateGET()
        {
            // Arrange
            MockShowroomData
            .Setup(_ => _.GetAllActive())
            .ReturnsAsync(new List <Showroom>().AsEnumerable());

            // Act
            dynamic response = await ControllerUnderTest.Create();

            // Assert
            MockShowroomData.Verify(_ => _.GetAllActive(), Times.Once);
            Assert.True(response.Model.GetType() == typeof(CarEditViewModel));
        }
        private async Task TestCreatePOSTInvalidModelState()
        {
            // Arrange
            var car   = GetCar();
            var model = GetCarEditViewModel(car);

            // Act
            ControllerUnderTest.ModelState.AddModelError("key", "error"); // force invalid input
            dynamic response = await ControllerUnderTest.Create(model);

            // Assert
            MockShowroomData.Verify(_ => _.GetAllActive(), Times.Once);

            Assert.True(response.Model != null);
        }
        private async Task TestEditGET()
        {
            // Arrange
            var id    = Guid.Empty;
            var car   = GetCar();
            var model = GetCarEditViewModel(car);

            MockCarData
            .Setup(_ => _.GetById(id))
            .ReturnsAsync(car);
            MockMapper
            .Setup(_ => _.Map <CarEditViewModel>(car))
            .Returns(model);
            MockShowroomData
            .Setup(_ => _.GetAllActive())
            .ReturnsAsync(new List <Showroom>().AsEnumerable());

            // Act
            dynamic response = await ControllerUnderTest.Edit(id);

            // Assert
            MockCarData.Verify(_ => _.GetById(id), Times.Once);
            Assert.True(response.Model.Brand.Equals(model.Brand));
        }