public void Add_AddsEmployeeAndReturnsARedirect_WhenModelStateIsValid()
        {
            //Arrange
            var mockCPUCoolerService = new Mock <IService <IRepository <CPUCooler>, CPUCooler> >();

            mockCPUCoolerService.Setup(repo => repo.GetByIdAsync(1)).ReturnsAsync(GetCPUCooler())
            .Verifiable();
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());
            var controller  = new CPUCoolersController(mockCPUCoolerService.Object)
            {
                TempData = tempData
            };

            controller.ModelState.AddModelError("Quantity", "Required");
            var inputModel = new PCItemInputModel()
            {
                Id = 1, Quantity = 1
            };

            // Act
            var result = controller.Add(inputModel);

            // Assert
            Assert.IsType <JsonResult>(result.Result);
            mockCPUCoolerService.Verify();
        }
        public void Add_ReturnsBadRequestResult_WhenModelStateIsInvalid()
        {
            // Arrange
            var mockCPUCoolerService = new Mock <IService <IRepository <CPUCooler>, CPUCooler> >();
            var inputModel           = new PCItemInputModel()
            {
                Id = 0, Quantity = 0
            };
            var controller = new CPUCoolersController(mockCPUCoolerService.Object);

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

            // Act
            var result = controller.Add(inputModel);

            // Assert
            var badRequestResult = Assert.IsType <BadRequestResult>(result.Result);
        }
        public async Task Index_ReturnsAViewResult_WithAListOfCPUCoolers()
        {
            // Arrange
            var mockCPUCoolerService = new Mock <IService <IRepository <CPUCooler>, CPUCooler> >();

            mockCPUCoolerService.Setup(repo => repo.GetAllAsync())
            .ReturnsAsync(GetTestCPUCoolers());
            var controller = new CPUCoolersController(mockCPUCoolerService.Object);

            // Act
            var result = await controller.Index();

            // Assert
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <IEnumerable <CPUCooler> >(
                viewResult.ViewData.Model);

            Assert.Equal(2, model.Count());
        }