예제 #1
0
        public async Task HttpPut_PutProduct_WhenValidProductIdPassed_ReturnsOKResult()
        {
            // Arrange
            int ProductId = 5;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));
            _controller = new ProductsController(_mockRepository.Object);

            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list has a product with productid 5
            // passing valid productid should return ok request
            Product product = new Product
            {
                ProductId = 0,
                Name      = "Test product five update",
                Price     = 107,
                Quantity  = 12
            };

            var okObjectResult = await _controller.Put(ProductId, product);

            var result = (OkObjectResult)okObjectResult.Result;

            // Assert
            Assert.IsType <OkObjectResult>(result);
            var item = (Product)result.Value;

            Assert.Equal("Test product five update", item.Name);
            Assert.Equal(107, item.Price);
            Assert.Equal(12, item.Quantity);
        }
예제 #2
0
        public async Task HttpDelete_DeleteProduct_WhenInvalidProductIdPassed_ReturnsNotFoundResult()
        {
            // Arrange
            int ProductId = 1000;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));

            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list does not have a product with productid 1000
            // passing invalid productid should return not found
            Product product = new Product
            {
                ProductId = 0,
                Name      = "Test Product",
                Price     = 10,
                Quantity  = 1
            };

            var badRequestResult = await _controller.Delete(ProductId);

            var result = (NotFoundObjectResult)badRequestResult.Result;

            // Assert
            Assert.IsType <NotFoundObjectResult>(result);
        }
예제 #3
0
        public async Task HttpPost_PostProduct_WhenValidObjectPassed_ReturnsOKRequest()
        {
            // Arrange
            _mockRepository.Setup(repo => repo.GetAll())
            .ReturnsAsync(FakeProduct.GetProducts());
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // passing valid product object should return ok request
            Product product = new Product
            {
                ProductId = 0,
                Name      = "Test Product",
                Price     = 10,
                Quantity  = 1
            };

            var okObjectResult = await _controller.Post(product);

            var result = (OkObjectResult)okObjectResult.Result;

            // Assert
            Assert.IsType <OkObjectResult>(result);
            var item = (Product)result.Value;

            Assert.Equal("Test Product", item.Name);
            Assert.Equal(10, item.Price);
            Assert.Equal(1, item.Quantity);
        }
예제 #4
0
        public async Task HttpPost_PostProduct_WhenInvalidQuantityPassed_ReturnsBadRequest()
        {
            // Arrange
            _mockRepository.Setup(repo => repo.GetAll())
            .ReturnsAsync(FakeProduct.GetProducts());
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // product quantity must be greater than zero
            // should return bad request
            Product product = new Product
            {
                ProductId = 0,
                Name      = "Test Product",
                Price     = 10,
                Quantity  = 0
            };

            var badRequestResult = await _controller.Post(product);

            var result = (BadRequestObjectResult)badRequestResult.Result;

            // Assert
            Assert.IsType <BadRequestObjectResult>(result);
        }
예제 #5
0
        public async Task HttpPost_PostProduct_WhenInvalidNamePassed_ReturnsBadRequest()
        {
            // Arrange
            _mockRepository.Setup(repo => repo.GetAll())
            .ReturnsAsync(FakeProduct.GetProducts());
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // product name is required not null or empty
            // should return bad request
            Product product = new Product
            {
                ProductId = 0,
                Name      = "",
                Price     = 10,
                Quantity  = 1
            };

            var badRequestResult = await _controller.Post(product);

            var result = (BadRequestObjectResult)badRequestResult.Result;

            // Assert
            Assert.IsType <BadRequestObjectResult>(result);
        }
예제 #6
0
        public async Task HttpGet_GetProducts_WhenCalled_ReturnsOKResult()
        {
            // Arrange
            _mockRepository.Setup(repo => repo.GetAll())
            .ReturnsAsync(FakeProduct.GetProducts());
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            var okObjectResult = await _controller.Get(strToken);

            // Assert
            Assert.IsType <OkObjectResult>((OkObjectResult)okObjectResult.Result);
        }
예제 #7
0
        public async Task HttpGet_GetProduct_WhenCorrectProductIdPassed_ReturnsOKResult()
        {
            // Arrange
            int ProductId = 5;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list has a product with productid 5 and name 'Coffee'
            var okObjectResult = await _controller.Get(5);

            // Assert
            Assert.IsType <OkObjectResult>((OkObjectResult)okObjectResult.Result);
        }
예제 #8
0
        public async Task HttpGet_GetProduct_WhenIncorrectProductIdPassed_ReturnsNotFoundOKResult()
        {
            // Arrange
            int ProductId = 100;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list does not have a product with productId 100
            // should throw not found response
            var notFoundResult = await _controller.Get(100);

            // Assert
            Assert.IsType <NotFoundResult>((NotFoundResult)notFoundResult.Result);
        }
예제 #9
0
        public async Task HttpGet_GetProducts_WhenCalled_ReturnsAllItems()
        {
            // Arrange
            _mockRepository.Setup(repo => repo.GetAll())
            .ReturnsAsync(FakeProduct.GetProducts());
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            var okObjectResult = await _controller.Get(strToken);

            var result = (OkObjectResult)okObjectResult.Result;

            // Assert
            // mock product list have exactly five products.
            // test should pass
            var items = (List <Product>)result.Value;

            Assert.Equal(9, items.Count);
        }
예제 #10
0
        public async Task HttpDelete_DeleteProduct_WhenValidProductIdPassed_ReturnsOKResult()
        {
            // Arrange
            int ProductId = 5;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list has a product with productid 5
            // passing valid productid should return ok request
            var okObjectResult = await _controller.Delete(ProductId);

            var result = (OkObjectResult)okObjectResult.Result;

            // Assert
            Assert.Equal(true, result.Value);
        }
예제 #11
0
        public async Task HttpGet_GetProduct_WhenCorrectProductIdPassed_ReturnsProductType()
        {
            // Arrange
            int ProductId = 5;

            _mockRepository.Setup(repo => repo.GetById(ProductId))
            .ReturnsAsync(FakeProduct.GetProducts().FirstOrDefault(p => p.ProductId == ProductId));
            _controller = new ProductsController(_mockRepository.Object);

            // Act
            // mock product list has a product with productid 5 and name 'Coffee'
            var okObjectResult = await _controller.Get(5);

            var result = (OkObjectResult)okObjectResult.Result;

            // Assert
            var items = (Product)result.Value;

            Assert.Equal("Apple", items.Name);
        }