Example #1
0
        public void ReturnCorrectAmountOfProducts_WhenInvoked()
        {
            // Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productsMock = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category()
                    {
                        Name = "Patki"
                    }
                }
            }.GetQueryableMockDbSet();

            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Products).Returns(productsMock.Object);

            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            // Act
            var products = service.GetProductsByCategoryName("Patki");

            //Assert
            Assert.AreEqual(1, products.Count());
        }
        public void ReturnCorrectData_WhenInvoked()
        {
            // Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext = new Mock <IOnlineStoreContext>();
            var products    = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category {
                        Name = "Patki"
                    }
                }
            };
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();
            var mockSet             = new Mock <DbSet <Product> >();

            mockSet.SetupData(products);
            mockContext.Setup(s => s.Products).Returns(mockSet.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            // Act
            var productsGot = service.GetAllProducts();

            //Assert
            Assert.AreEqual(products.Count, productsGot.Count());
        }
Example #3
0
        public void ReturnInstanceOfTypeIEnumerableProductModel_WhenInvoked()
        {
            // Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productsMock = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category()
                    {
                        Name = "Patki"
                    }
                }
            }.GetQueryableMockDbSet();

            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Products).Returns(productsMock.Object);

            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            // Act
            var products = service.GetProductsByCategoryName("Patki");

            //Assert
            Assert.IsInstanceOfType(products, typeof(IEnumerable <ProductModel>));
        }
Example #4
0
        public void ThrowArgumentException_WhenProductExists()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext = new Mock <IOnlineStoreContext>();
            var products    = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category {
                        Name = "Patki"
                    }
                }
            };
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();
            var mockSet             = new Mock <DbSet <Product> >();

            mockSet.SetupData(products);
            mockContext.Setup(s => s.Products).Returns(mockSet.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act

            var productToAdd = new ProductImportModel {
                Name = "Testproduct"
            };

            //Assert
            Assert.ThrowsException <ArgumentException>(() => service.AddProduct(productToAdd));
        }
        public void InvokeAddMethod_WhenModelsAreValid()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var productToImport = new ProductImportModel
            {
                Category      = "TestCategory",
                Name          = "TestProduct 2",
                PurchasePrice = 50m,
                Quantity      = 5,
                Supplier      = "TestSupplier"
            };
            var productToImport2 = new ProductImportModel
            {
                Category      = "TestCategory",
                Name          = "TestProduct 5",
                PurchasePrice = 50m,
                Quantity      = 5,
                Supplier      = "TestSupplier"
            };
            var productsToImport = new List <ProductImportModel> {
                productToImport, productToImport2
            };
            var mockContext    = new Mock <IOnlineStoreContext>();
            var productsMock   = new List <Product> ().GetQueryableMockDbSet();
            var categoriesMock = new List <Category> {
                new Category {
                    Name = "TestCategory"
                }
            }.GetQueryableMockDbSet();
            var suppliersMock = new List <Supplier> {
                new Supplier {
                    Name = "TestSupplier"
                }
            }.GetQueryableMockDbSet();
            var fakemapper = new Mock <IMapper>();

            fakemapper.SetupSequence(x => x.Map <IProductImportModel, Product>(It.IsAny <IProductImportModel>())).Returns(new Product {
                Name = productToImport.Name, PurchasePrice = productToImport.PurchasePrice, SellingPrice = productToImport.PurchasePrice * 1.5m, Quantity = productToImport.Quantity
            }).Returns(new Product {
                Name = productToImport2.Name, PurchasePrice = productToImport2.PurchasePrice, SellingPrice = productToImport2.PurchasePrice * 1.5m, Quantity = productToImport2.Quantity
            });

            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Categories).Returns(categoriesMock.Object);
            mockContext.Setup(s => s.Suppliers).Returns(suppliersMock.Object);
            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act
            service.AddProductRange(productsToImport);

            //Assert
            productsMock.Verify(v => v.Add(It.IsAny <Product>()), Times.Exactly(2));
        }
        public void ThrowNullArgumentException_WhenProductModelsIsNull()
        {
            //Arrange
            var fakeContext         = new Mock <IOnlineStoreContext>();
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();
            var service             = new Logic.Services.ProductService(fakeContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act && Assert
            Assert.ThrowsException <ArgumentNullException>(() => service.AddProductRange(null));
        }
        public void ThrowArgumentNullException_WhenInputStringIsNull()
        {
            //Arrange
            var fakeContext         = new Mock <IOnlineStoreContext>();
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();
            var service             = new Logic.Services.ProductService(fakeContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act && Assert
            Assert.ThrowsException <ArgumentNullException>(() => service.RemoveProductByName(null));
        }
        public void InvokeCategoryServiceCreate_WhenCategoryNotAvailable()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var productToImport = new ProductImportModel
            {
                Category      = "Patkiii",
                Name          = "TestProduct",
                PurchasePrice = 50m,
                Quantity      = 5,
                Supplier      = "TestSupplier"
            };
            var productsToImport = new List <ProductImportModel> {
                productToImport
            };

            var mockContext    = new Mock <IOnlineStoreContext>();
            var productsMock   = new List <Product>().GetQueryableMockDbSet();
            var categoriesMock = new List <Category> {
                new Category {
                    Name = "TestCategory"
                }
            }.GetQueryableMockDbSet();
            var categoriesAddedMock = new List <Category> {
                new Category {
                    Name = "Patkiii"
                }
            }.GetQueryableMockDbSet();
            var suppliersMock = new List <Supplier> {
                new Supplier {
                    Name = "TestSupplier"
                }
            }.GetQueryableMockDbSet();
            var fakemapper = new Mock <IMapper>();

            fakemapper.Setup(x => x.Map <IProductImportModel, Product>(It.IsAny <IProductImportModel>())).Returns(new Product {
                Name = productToImport.Name, PurchasePrice = productToImport.PurchasePrice, SellingPrice = productToImport.PurchasePrice * 1.5m, Quantity = productToImport.Quantity
            });

            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.SetupSequence(s => s.Categories).Returns(categoriesMock.Object).Returns(categoriesAddedMock.Object);
            mockContext.Setup(s => s.Suppliers).Returns(suppliersMock.Object);
            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act
            service.AddProductRange(productsToImport);

            //Assert
            fakeCategoryService.Verify(v => v.Create(It.IsAny <string>()), Times.Once);
        }
        public void InvokeRemoveMethod_WhenProductIsFound()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var productToAdd = new ProductImportModel
            {
                Name          = "Testproduct2",
                Supplier      = "TestSupplier",
                Category      = "TestCategory",
                PurchasePrice = 5.50m,
                Quantity      = 5
            };
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productsMock = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category {
                        Name = "Patki"
                    }
                }
            }.GetQueryableMockDbSet();
            var categoriesMock = new List <Category> {
                new Category {
                    Name = "TestCategory"
                }
            }.GetQueryableMockDbSet();
            var suppliersMock = new List <Supplier> {
                new Supplier {
                    Name = "TestSupplier"
                }
            }.GetQueryableMockDbSet();
            var fakemapper = new Mock <IMapper>();

            fakemapper.Setup(x => x.Map <Product>(It.IsAny <IProductImportModel>())).Returns(new Product {
                Name = productToAdd.Name, PurchasePrice = productToAdd.PurchasePrice, SellingPrice = productToAdd.PurchasePrice * 1.5m
            });

            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Categories).Returns(categoriesMock.Object);
            mockContext.Setup(s => s.Suppliers).Returns(suppliersMock.Object);
            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act
            service.RemoveProductByName("Testproduct");

            //Assert
            productsMock.Verify(v => v.Remove(It.IsNotNull <Product>()), Times.Once);
        }
        public void ThrowArgumentException_WhenSupplierNotFound()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var productToImport = new ProductImportModel
            {
                Category      = "TestCategory",
                Name          = "TestProduct",
                PurchasePrice = 50m,
                Quantity      = 5,
                Supplier      = "Pesho"
            };
            var productsToImport = new List <ProductImportModel> {
                productToImport
            };

            var mockContext    = new Mock <IOnlineStoreContext>();
            var productsMock   = new List <Product>().GetQueryableMockDbSet();
            var categoriesMock = new List <Category> {
                new Category {
                    Name = "TestCategory"
                }
            }.GetQueryableMockDbSet();
            var suppliersMock = new List <Supplier> {
                new Supplier {
                    Name = "TestSupplier"
                }
            }.GetQueryableMockDbSet();
            var fakemapper = new Mock <IMapper>();

            fakemapper.Setup(x => x.Map <IProductImportModel, Product>(It.IsAny <IProductImportModel>())).Returns(new Product {
                Name = productToImport.Name, PurchasePrice = productToImport.PurchasePrice, SellingPrice = productToImport.PurchasePrice * 1.5m, Quantity = productToImport.Quantity
            });

            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Categories).Returns(categoriesMock.Object);
            mockContext.Setup(s => s.Suppliers).Returns(suppliersMock.Object);
            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act && Assert
            Assert.ThrowsException <ArgumentException>(() => service.AddProductRange(productsToImport));
        }
Example #11
0
        public void ThrowArgumentException_WhenCategoryNotFound()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext = new Mock <IOnlineStoreContext>();
            var products    = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category {
                        Name = "Patki"
                    }
                }
            };
            var categoriesMock = new List <Category> {
                new Category {
                    Name = "TestCategory"
                }
            }.GetQueryableMockDbSet();
            var suppliersMock = new List <Supplier> {
                new Supplier {
                    Name = "TestSupplier"
                }
            }.GetQueryableMockDbSet();
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();
            var mockSet             = new Mock <DbSet <Product> >();

            mockSet.SetupData(products);
            mockContext.Setup(s => s.Products).Returns(mockSet.Object);
            mockContext.Setup(s => s.Categories).Returns(categoriesMock.Object);
            mockContext.Setup(s => s.Suppliers).Returns(suppliersMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act

            var productToAdd = new ProductImportModel {
                Name = "Testproduct2", Category = "Gubi"
            };

            //Assert
            Assert.ThrowsException <ArgumentException>(() => service.AddProduct(productToAdd));
        }
        public void ThrowArgumentException_WhenProductNotFound()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productsMock = new List <Product> {
                new Product {
                    Name = "Testproduct", Quantity = 5, Category = new Category {
                        Name = "Patki"
                    }
                }
            }.GetQueryableMockDbSet();
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act && Assert
            Assert.ThrowsException <ArgumentException>(() => service.RemoveProductByName("Patka"));
        }
        public void ReturnInstanceOfTypeIProductModel_WhenProductExists()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productToAdd = new Product
            {
                Name     = "Testproduct",
                Quantity = 5,
                Category = new Category {
                    Name = "Patki"
                },
                Supplier = new Supplier()
                {
                    Name = "Pesho"
                },
                PurchasePrice = 50m,
                SellingPrice  = 75m
            };
            var productsMock = new List <Product> {
                productToAdd
            }.GetQueryableMockDbSet();
            var fakemapper = new Mock <IMapper>();

            fakemapper.Setup(x => x.Map <IProductModel>(It.IsAny <Product>())).Returns(new ProductModel {
                Name = productToAdd.Name, PurchasePrice = productToAdd.PurchasePrice, SellingPrice = productToAdd.PurchasePrice * 1.5m, Quantity = productToAdd.Quantity, CategoryName = productToAdd.Category.Name
            });
            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act
            var productFound = service.FindProductByName("Testproduct");

            // Assert
            Assert.IsInstanceOfType(productFound, typeof(IProductModel));
        }
Example #14
0
        public void ReturnFalse_WhenProductDoesNotExist()
        {
            //Arrange
            Mapper.Reset();
            AutomapperConfiguration.Initialize();
            var mockContext  = new Mock <IOnlineStoreContext>();
            var productsMock = new List <Product> {
                new Product {
                    Name = "Pesho"
                }
            }.GetQueryableMockDbSet();
            var fakemapper          = new Mock <IMapper>();
            var fakeCategoryService = new Mock <ICategoryService>();

            mockContext.Setup(s => s.Products).Returns(productsMock.Object);
            var service = new Logic.Services.ProductService(mockContext.Object, fakemapper.Object, fakeCategoryService.Object);

            //Act
            var searchResult = service.ProductExistsByName("Pesho go nqma");

            //Assert
            Assert.IsFalse(searchResult);
        }