Пример #1
0
        public async Task GetAllProducts()
        {
            //Arrange
            mockRepo.Setup(p => p.GetProducts()).Returns(Task.FromResult(products));

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

            // Assert
            var okResult       = result.Should().BeOfType <OkObjectResult>().Subject;
            var productsResult = okResult.Value.Should().BeAssignableTo <IEnumerable <ProductViewModel> >().Subject;

            productsResult.Count().Should().Be(3);
        }
Пример #2
0
        public async void GetAsync_InvalidName_ReturnStatusNotFound()
        {
            //Arrange
            var productIdOne = new Guid("0643CCF0-AB00-4862-B3C5-40E2731ABCC9");
            var productIdTwo = new Guid("A21D5777-A655-4020-B431-624BB331E9A2");

            var productsDto = GetProductDtos(productIdOne, productIdTwo);
            var productDto  = new List <ProductDto>
            {
                productsDto[0]
            };

            var products = new List <Product>();

            _productService.Setup(s => s.FindProductAsync(It.IsAny <Predicate <Product> >())).ReturnsAsync((IList <Product>)null);
            _mapper.Setup(m => m.ToProductDtos(It.IsAny <IList <Product> >())).Returns(productDto);

            var productsController = new ProductsController(_productService.Object, _mapper.Object);

            //Act
            var result = await productsController.GetAsync("test");

            //Assert
            var notFoundResult = Assert.IsType <NotFoundResult>(result);

            Assert.Equal(404, notFoundResult.StatusCode);
        }
Пример #3
0
        public async void GetAsync_ProductName_ReturnAllProductsWithThisNameAndStatusOk()
        {
            //Arrange
            var productIdOne = new Guid("0643CCF0-AB00-4862-B3C5-40E2731ABCC9");
            var productIdTwo = new Guid("A21D5777-A655-4020-B431-624BB331E9A2");

            var productsDto = GetProductDtos(productIdOne, productIdTwo);
            var productDto  = new List <ProductDto>
            {
                productsDto[0]
            };

            var products = new List <Product>();

            _productService.Setup(s => s.FindProductAsync(It.IsAny <Predicate <Product> >())).ReturnsAsync(products);
            _mapper.Setup(m => m.ToProductDtos(It.IsAny <IList <Product> >())).Returns(productDto);

            var productsController = new ProductsController(_productService.Object, _mapper.Object);

            //Act
            var result = await productsController.GetAsync("test");

            //Assert
            var okResult = Assert.IsType <OkObjectResult>(result);

            Assert.Equal(200, okResult.StatusCode);
            var resultproductDtos = (IList <ProductDto>)okResult.Value;

            Assert.Equal(1, resultproductDtos.Count);
            Assert.Equal(2, resultproductDtos[0].ProductOptions.Count);
            Assert.Equal(productIdOne, resultproductDtos[0].Id);
            Assert.Equal(productIdOne, resultproductDtos[0].ProductOptions[1].ProductId);
            Assert.Equal(new Guid("1FA85F64-5717-4562-B3FC-2C963F66AFA6"), resultproductDtos[0].ProductOptions[0].Id);
        }
Пример #4
0
        public async Task GetAsync_GetProductsByName()
        {
            // Arrange
            var mockIProductService = new Mock <IProductService>();

            mockIProductService
            .Setup(arg => arg.GetAllProductsAsync())
            .ReturnsAsync(new Products(new List <Product>()));
            mockIProductService
            .Setup(arg => arg.GetProductsByNameAsync("TEST"))
            .ReturnsAsync(new Products(new List <Product>()));

            var mockIProductOptionService = new Mock <IProductOptionService>();

            var sut = new ProductsController(mockIProductService.Object, mockIProductOptionService.Object);

            // Act
            var response = await sut.GetAsync("TEST");

            // Assert
            Assert.IsType <OkObjectResult>(response);
            var objectResponse = response as ObjectResult;

            Assert.Equal(200, objectResponse.StatusCode);
            mockIProductService.Verify(arg => arg.GetAllProductsAsync(), Times.Never);
            mockIProductService.Verify(arg => arg.GetProductsByNameAsync("TEST"), Times.Once);
        }
Пример #5
0
        public void GetAsyncReturnsOk()
        {
            var productsController = new ProductsController(new ProductsProvider());
            var result             = productsController.GetAsync("1").Result;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
        }
Пример #6
0
        public void GetAsyncReturnsNotFound()
        {
            var producstController = new ProductsController(new ProductsProvider());
            var result             = producstController.GetAsync("10000").Result;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
Пример #7
0
        public async Task Get_ActionInvoked_ProductRepositoryCalled()
        {
            // Arrange
            ProductsController controller = GetController();

            // Act
            await controller.GetAsync();

            // Assert
            productRepository.Verify(pr => pr.GetAllProducts());
        }
        public async Task Get_NotExistedId_ReturnsNotFoundResult(string id)
        {
            var queriesHandlerMock = new Mock <IProductQueriesHandler>();

            queriesHandlerMock.Setup(handler => handler.GetAsync(id)).ReturnsAsync((ProductViewModel)null);

            var productController = new ProductsController(GetProductCommandsHandler(), queriesHandlerMock.Object, null);
            var result            = await productController.GetAsync(id);

            Assert.IsInstanceOf <NotFoundResult>(result);
        }
        public async Task ProductsController_Get_Returns_Product_List()
        {
            var mockProductRepository = new Mock <IProductRepository>();

            mockProductRepository.Setup(x => x.GetProducts(It.IsAny <ProductOptions>()))
            .Returns(Task.FromResult(GetProducts()));
            var productsController = new ProductsController(mockProductRepository.Object);
            var products           = await productsController.GetAsync();

            Assert.Equal(2, products.Count());
        }
        public void GetAsyncReturnNoFound()
        {
            var productsProvider = new ProductsProvider();
            //is needed to pass the provider class to controller as a parameter
            var productsController = new ProductsController(productsProvider);

            var resultado = productsController.GetAsync("101").Result;

            Assert.IsNotNull(resultado);
            Assert.IsInstanceOfType(resultado, typeof(NotFoundResult));
        }
        public async Task Get_ExistedId_ReturnsOrResultWithProduct(string id)
        {
            var product            = GetProduct(id);
            var queriesHandlerMock = new Mock <IProductQueriesHandler>();

            queriesHandlerMock.Setup(handler => handler.GetAsync(id)).ReturnsAsync(product);

            var productController = new ProductsController(GetProductCommandsHandler(), queriesHandlerMock.Object, null);
            var result            = await productController.GetAsync(id);

            Assert.IsInstanceOf <OkObjectResult>(result);
            Assert.AreEqual(product, ((OkObjectResult)result).Value);
        }
Пример #12
0
        public void GetAsyncReturnsNotFound()
        {
            // Setup
            var provider   = new ProductsProvider();
            var controller = new ProductsController(provider);

            // Act
            var result = controller.GetAsync("1000").Result;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
Пример #13
0
        public async Task GetById_ValidIdPassedAndFound_ProductRepositoryCalledWithCorrectId()
        {
            // Arrange
            ProductsController controller = GetController();
            const int          ProductId  = 5;

            SetupProductService(new Product {
                Stock = 1
            });

            // Act
            await controller.GetAsync(ProductId);

            // Assert
            productRepository.Verify(pr => pr.GetProduct(ProductId));
        }
        public async void GetAsync_ReturnsOK_WithProductDetails()
        {
            var subject = new ProductsController(mockProductDetailsService.Object, mockProductPriceRepository.Object);
            var price   = new Price {
                Value = 45.50M, CurrencyCode = "EUR"
            };

            mockProductDetailsService.Setup(service => service.GetProductNameById(It.IsAny <string>())).Returns(Task.FromResult("foo"));
            mockProductPriceRepository.Setup(repo => repo.GetPrice(It.IsAny <string>())).Returns(price);

            var result = await subject.GetAsync("1234");

            var ok        = (OkObjectResult)result;
            var resultObj = (Product)ok.Value;

            Assert.Equal("1234", resultObj.Id);
            Assert.Equal("foo", resultObj.Name);
            Assert.Equal(price, resultObj.CurrentPrice);
        }
        public async Task ProductsController_Get_By_UPC_Returns_Product()
        {
            var upc = "12345";
            var mockProductRepository = new Mock <IProductRepository>();
            var mockProduct           = GetProducts().Where(x => x.ProductUpc == upc)?.FirstOrDefault();

            mockProductRepository.Setup(x => x.GetProduct(It.Is <string>(y => y.Equals(upc))))
            .Returns(Task.FromResult(mockProduct));

            var productsController = new ProductsController(mockProductRepository.Object);
            var product            = await productsController.GetAsync(upc);

            Assert.NotNull(mockProduct);
            Assert.NotNull(product);
            Assert.Equal(mockProduct.SalePrice, product.SalePrice);
            Assert.Equal(mockProduct.ListPrice, product.ListPrice);
            Assert.Equal(mockProduct.ProductUpc, product.ProductUpc);
            Assert.Equal(mockProduct.Description, product.Description);
            Assert.Equal(mockProduct.ProductName, product.ProductName);
        }
Пример #16
0
        public async Task Get_ProductsFound_Returns200OkAsync()
        {
            var products = new List <Models.Product>
            {
                new Models.Product {
                    Name = "A", Price = 99.99M, Quantity = 10
                },
                new Models.Product {
                    Name = "B", Price = 101.99M, Quantity = 20
                },
                new Models.Product {
                    Name = "C", Price = 10.99M, Quantity = 30
                },
                new Models.Product {
                    Name = "D", Price = 5, Quantity = 40
                }
            };

            var result = await _controllerUnderTest.GetAsync(getProductsCommand, "High", new CancellationToken());

            var okObjectResult = result as OkObjectResult;

            Assert.Equal(200, okObjectResult.StatusCode);
        }