Example #1
0
        public void DetailRendersProduct()
        {
            // Arrange
            var products = new List <Product>();

            products.Add(new Product {
                ProductID = 123, ProductName = "Roomba"
            });

            var repository = new Mock <NorthwindRepository>();

            repository.Setup(r => r.Products).Returns(products.AsQueryable());

            // Act
            var controller = new ProductsController(repository.Object);
            var result     = controller.Detail(123) as ViewResult;

            // Assert
            Assert.IsNotNull(result, "Expected the result to be a render view result");

            var viewData = result.ViewData.Model as Product;

            Assert.AreEqual(123, viewData.ProductID);
            Assert.AreEqual("Roomba", viewData.ProductName);
        }
        public async Task DetailShouldReturnNotFoundWithInvalidProductId()
        {
            //Arrange
            var db = this.GetDatabase();

            var userProductService = new Mock <UserProductService>(db);
            var controller         = new ProductsController(userProductService.Object, null, null);

            //Act
            var result = await controller.Detail(1);

            //Assert
            result
            .Should()
            .BeOfType <NotFoundResult>();
        }
        public async Task DetailShouldReturnViewWithCorrectModelWithValidProductId()
        {
            //Arrange
            var db = this.GetDatabase();


            var userProductService = new Mock <UserProductService>(db);

            userProductService.Setup(p => p.Detail(It.IsAny <int>())).ReturnsAsync(new ProductDetailServiceModel());
            var controller = new ProductsController(userProductService.Object, null, null);

            //Act
            var result = await controller.Detail(1);

            //Assert
            result
            .Should()
            .BeOfType <ViewResult>()
            .Subject
            .Model
            .Should()
            .Match(m => m.As <ProductDetailViewModel>().Product.Id == 1);
        }