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);
        }
示例#4
0
        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));
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }