public async Task Should_Return_Products_Matching_Name() { //Arrange var entities = new List <Product>(); var productB = new Product { Id = Guid.NewGuid(), Name = "Product2", Description = "B Prod 2", Price = 30, DeliveryPrice = 20 }; entities.Add(productB); IReadOnlyList <Product> productEntities = entities; var prodRepoMock = new Mock <IProductRepository>(); var prodOptionRepoMock = new Mock <IProductOptionRepository>(); prodRepoMock.Setup(pm => pm.ListAsync(It.IsAny <Expression <Func <Product, bool> > >(), null, null)) .Returns(Task.FromResult(productEntities)).Verifiable(); //Act var controller = new ProductV1Controller(prodRepoMock.Object, prodOptionRepoMock.Object); var actionResult = await controller.GetAllAsync(productB.Name); //Assert Mock.Verify(prodRepoMock); actionResult.As <IActionResult>().Should().BeOfType <OkObjectResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.OK); var products = (Products)actionResult.As <OkObjectResult>().Value; Assert.NotNull(products); Assert.True(products.Items.Count() == 1); Assert.True(products.Items.First().Id == productB.Id); }
public async Task Should_Return_Product() { //Arrange var productA = new Product { Id = Guid.NewGuid(), Name = "Product1", Description = "A Prod 1", Price = 10, DeliveryPrice = 5 }; var prodRepoMock = new Mock <IProductRepository>(); var prodOptionRepoMock = new Mock <IProductOptionRepository>(); prodRepoMock.Setup(pm => pm.GetByIdAsync(It.IsAny <Guid>())).Returns(Task.FromResult(productA)).Verifiable(); //Act var controller = new ProductV1Controller(prodRepoMock.Object, prodOptionRepoMock.Object); var actionResult = await controller.GetProductAsync(productA.Id); //Assert Mock.Verify(prodRepoMock); actionResult.As <IActionResult>().Should().BeOfType <OkObjectResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.OK); var product = (Product)actionResult.As <OkObjectResult>().Value; Assert.NotNull(product); Assert.True(product.Id == productA.Id); }
public async Task Should_Return_NotFound() { //Arrange var prodRepoMock = new Mock <IProductRepository>(); var prodOptionRepoMock = new Mock <IProductOptionRepository>(); prodRepoMock.Setup(pm => pm.GetByIdAsync(It.IsAny <Guid>())).Returns(Task.FromResult((Product)null)).Verifiable(); //Act var controller = new ProductV1Controller(prodRepoMock.Object, prodOptionRepoMock.Object); var actionResult = await controller.GetProductAsync(Guid.NewGuid()); //Assert Mock.Verify(prodRepoMock); actionResult.As <IActionResult>().Should().BeOfType <NotFoundResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.NotFound); }
public async Task Should_Return_All_Products() { //Arrange var entities = new List <Product>(); var productA = new Product { Id = Guid.NewGuid(), Name = "Product1", Description = "A Prod 1", Price = 10, DeliveryPrice = 5 }; var productB = new Product { Id = Guid.NewGuid(), Name = "Product2", Description = "B Prod 2", Price = 30, DeliveryPrice = 20 }; entities.Add(productA); entities.Add(productB); IReadOnlyList <Product> productEntities = entities; var prodRepoMock = new Mock <IProductRepository>(); var prodOptionRepoMock = new Mock <IProductOptionRepository>(); prodRepoMock.Setup(pm => pm.ListAllAsync()).Returns(Task.FromResult(productEntities)).Verifiable(); //Act var controller = new ProductV1Controller(prodRepoMock.Object, prodOptionRepoMock.Object); var actionResult = await controller.GetAllAsync(null); //Assert Mock.Verify(prodRepoMock); actionResult.As <IActionResult>().Should().BeOfType <OkObjectResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.OK); var products = (Products)actionResult.As <OkObjectResult>().Value; Assert.NotNull(products); Assert.True(products.Items.Count() == 2); Assert.Collection(products.Items, item => Assert.Contains("Product1", item.Name), item => Assert.Contains("Product2", item.Name)); }