public void EditProductProductShouldEditProduct() { var options = new DbContextOptionsBuilder <XeonDbContext>() .UseInMemoryDatabase(databaseName: "Add_Product_Database") .Options; var dbContext = new XeonDbContext(options); var productService = new ProductsService(dbContext); var product = new Product { Name = "USB", ParnersPrice = 31, Price = 39, Specification = "1.1" }; dbContext.Products.Add(product); dbContext.SaveChanges(); product.Name = "NewName"; product.ParnersPrice = 11; product.Price = 10; product.Specification = "2.0"; productService.EditProduct(product); var editedProduct = dbContext.Products.FirstOrDefault(x => x.Name == product.Name); Assert.Equal(product.Name, editedProduct.Name); Assert.Equal(product.ParnersPrice, editedProduct.ParnersPrice); Assert.Equal(product.Price, editedProduct.Price); Assert.Equal(product.Specification, editedProduct.Specification); }
public void EditProductShouldReturnTheProduct() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "EditProduct_Products_Database") .Options; var dbContext = new ApplicationDbContext(options); var productsService = new ProductsService(dbContext, null, null); var product = new Product { Name = "Ball", Description = "long description", IsHidden = false, AdditionalInfo = null, Price = 99 }; dbContext.Products.Add(product); dbContext.SaveChanges(); var result = productsService.EditProduct(product.Id, "NewName", "short", true, "yes", 20); Assert.Equal(product.Id, result.Id); Assert.NotEqual("Ball", result.Name); Assert.True(result.IsHidden); }
public void EditProductShouldNotEditTheProduct() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "EditProduct_Products_Db") .Options; var dbContext = new ApplicationDbContext(options); var productsService = new ProductsService(dbContext, null, null); var product = new Product { Name = "Ball", Description = "long description", IsHidden = false, AdditionalInfo = null, Price = 99 }; dbContext.Products.Add(product); dbContext.SaveChanges(); var result = productsService.EditProduct("123sddsad", null, "short", true, "yes", 20); Assert.Null(result); }
public void ShouldThrowArgumentNullException_WhenNullProductIsPassed() { // Arrange var mockedUnitOfWork = new Mock <IUnitOfWork>(); var mockedGenericRepository = new Mock <IGenericRepository <Product> >(); var productsService = new ProductsService(mockedUnitOfWork.Object, mockedGenericRepository.Object); // Act and Assert Assert.Throws <ArgumentNullException>(() => productsService.EditProduct(null)); }
public void ShouldThrowArgumentNullExceptionWithCorrectMessage_WhenNullProductIsPassed() { // Arrange var expectedExMessage = "Product cannot be null."; var mockedUnitOfWork = new Mock <IUnitOfWork>(); var mockedGenericRepository = new Mock <IGenericRepository <Product> >(); var productsService = new ProductsService(mockedUnitOfWork.Object, mockedGenericRepository.Object); // Act and Assert var exception = Assert.Throws <ArgumentNullException>(() => productsService.EditProduct(null)); StringAssert.Contains(expectedExMessage, exception.Message); }
public void ShouldCallCommitMethodOfUnitOfWorkOnce_WhenAProductIsPassed() { // Arrange var product = new Mock <Product>(); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var mockedGenericRepository = new Mock <IGenericRepository <Product> >(); mockedUnitOfWork.Setup(uow => uow.Commit()).Verifiable(); var productsService = new ProductsService(mockedUnitOfWork.Object, mockedGenericRepository.Object); // Act productsService.EditProduct(product.Object); // Assert mockedUnitOfWork.Verify(uow => uow.Commit(), Times.Once); }
public void ShouldCallUpdateMethodOfCategoryRepositoryOnce_WhenAProductIsPassed() { // Arrange var product = new Mock <Product>(); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var mockedGenericRepository = new Mock <IGenericRepository <Product> >(); mockedGenericRepository.Setup(gr => gr.Update(product.Object)).Verifiable(); var productsService = new ProductsService(mockedUnitOfWork.Object, mockedGenericRepository.Object); // Act productsService.EditProduct(product.Object); // Assert mockedGenericRepository.Verify(gr => gr.Update(product.Object), Times.Once); }
public async Task EditProductShouldReturnFalseIfCreatorIsNotTheSame() { var productRepo = new Mock <IRepository <Product> >(); var productId = Guid.NewGuid(); var products = new List <Product> { new Product { Id = Guid.NewGuid(), Name = "Jacket" }, new Product { Id = productId, Name = "Suit", CategoryId = Guid.NewGuid(), Color = "black", Creator = new User() { UserName = "******" }, Description = "some", Details = "some", ImageUrls = "1, 2", Sex = Sex.Men }, new Product { Id = Guid.NewGuid(), Name = "T-shirt" }, }; productRepo.Setup(r => r.All()).Returns(products.AsQueryable()); var service = new ProductsService(productRepo.Object, null, null); var editedProduct = new Product { Id = productId, Name = "Suit Edited", CategoryId = Guid.NewGuid(), Color = "black edited", Description = "some edited", Details = "some edited", Sex = Sex.Women }; var result = await service.EditProduct(editedProduct, "nqkuv", new List <string> { "3", "4" }); Assert.False(result); Assert.Equal(3, products.Count); Assert.Contains(products, p => p.Id == editedProduct.Id); Assert.DoesNotContain(products, p => p.Name == editedProduct.Name); Assert.DoesNotContain(products, p => p.CategoryId == editedProduct.CategoryId); Assert.DoesNotContain(products, p => p.Color == editedProduct.Color); Assert.DoesNotContain(products, p => p.Description == editedProduct.Description); Assert.DoesNotContain(products, p => p.Details == editedProduct.Details); Assert.DoesNotContain(products, p => p.Sex == editedProduct.Sex); Assert.DoesNotContain(products, p => p.ImageUrls == "1, 2, 3, 4"); productRepo.Verify(r => r.All(), Times.Once); productRepo.Verify(r => r.SaveChangesAsync(), Times.Never); }