Esempio n. 1
0
        private static void AddRangeOrdersTest()
        {
            ShopContextFactory shopContextFactory = new ShopContextFactory();
            ShopContext        context            = shopContextFactory.Create();

            ICustomerRepository customerRepository = new DbCustomerRepository(context);

            var customers = customerRepository.Get();

            ProductFaker productFaker = new ProductFaker();
            var          products     = productFaker.Generate(50);

            ServiceFaker serviceFaker = new ServiceFaker();
            var          services     = serviceFaker.Generate(10);

            // Union - suma zbiorów
            var items = products.OfType <Item>().Union(services);

            OrderFaker orderFaker = new OrderFaker(customers, new OrderDetailFaker(items));

            var orders = orderFaker.Generate(10);

            IOrderRepository orderRepository = new DbOrderRepository(context);

            orderRepository.AddRange(orders);
        }
Esempio n. 2
0
        public async void Build_IQueryable_ShouldConstructedWithoutWhereAndOrderByClause()
        {
            // 2.1. resolve dependency
            using (var container = _builder.Build())
                using (var scope = container.BeginLifetimeScope())
                {
                    // resolve context
                    _context = scope.Resolve <CatalogApiDbContext>();
                    // seed initial data in inmemory
                    _context = await SetupInitialDB(_context);

                    // expectedResult
                    var expectedResult = ProductFaker.GetProductList(50).Count;

                    // 3. qs dummy
                    NameValueCollection qsDummy = HttpUtility.ParseQueryString("");

                    // act
                    IQueryBuilder <Product> productQueryBuilder = scope.Resolve <IQueryBuilder <Product> >();
                    var result = await productQueryBuilder.Build(qsDummy);

                    var resultCount = result.Count;

                    // assert
                    Assert.Equal(expectedResult, resultCount);
                }
        }
Esempio n. 3
0
            public void ShouldReturnResultOfValidator(
                bool valid,
                ProductValidationService sut)
            {
                Mock <IProductValidator> productValidatorMock = new Mock <IProductValidator>();

                productValidatorMock
                .Setup(validator => validator.Validate(It.IsAny <IProduct>()))
                .Returns(() =>
                {
                    if (valid)
                    {
                        return(new ValidationResult());
                    }
                    else
                    {
                        return(new ValidationResult(new[] { new ValidationFailure("Test", "Test validator") }));
                    }
                });

                sut.AddValidator(productValidatorMock.Object);

                IProduct product = new ProductFaker().Generate();

                ValidationResult result = sut.Validate(product);

                result.IsValid.Should().Be(valid);
            }
Esempio n. 4
0
        protected override void Seed(Vavatech.WebApi.DbServices.WarehouseContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data.

            ProductFaker  productFaker  = new ProductFaker();
            ServiceFaker  serviceFaker  = new ServiceFaker();
            CustomerFaker customerFaker = new CustomerFaker(new AddressFaker());

            Product[] products = productFaker.Generate(10).ToArray();

            context.Products.AddOrUpdate(p => p.Id, products);

            Service[] services = serviceFaker.Generate(20).ToArray();

            context.Services.AddOrUpdate(p => p.Id, services);

            context.Customers.AddOrUpdate(p => p.Id, customerFaker.Generate(50).ToArray());

            EmployeeFaker employeeFaker = new EmployeeFaker();

            context.Users.AddOrUpdate(p => p.Id, employeeFaker.Generate(10).ToArray());

            GuestFaker guestFaker = new GuestFaker();

            context.Users.AddOrUpdate(p => p.Id, guestFaker.Generate(10).ToArray());
        }
Esempio n. 5
0
        public static void Generate()
        {
            var productFaker = new ProductFaker();
            var serviceFaker = new ServiceFaker();

            var products = productFaker.Generate(100);
            var services = serviceFaker.Generate(40);

            var customerFaker = new CustomerFaker();
            var customers     = customerFaker.Generate(50);

            //var items = products.OfType<Item>().Union(services).ToList();

            //var orderFaker = new OrderFaker(customers, items);
            //var orders = orderFaker.Generate(10);


            using (var context = new MyContext())
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                context.Products.AddRange(products);
                context.Services.AddRange(services);
                context.SaveChanges();


                context.Customers.AddRange(customers);
                context.SaveChanges();

                //context.Orders.AddRange(orders);
                //context.SaveChanges();
            }
        }
            public void ShouldReturnSuccessWhenAdded(
                Basket sut)
            {
                IProduct product = new ProductFaker().Generate();

                AddResult result = sut.Add(product);

                result.Success.Should().BeTrue();
            }
            public void ShouldAddProductToListOfProducts(
                Basket sut)
            {
                IProduct product = new ProductFaker().Generate();

                sut.Add(product);

                sut.Products.Should().Contain(product);
            }
Esempio n. 8
0
            public void ShouldReturnValidWhenNoValidators(
                ProductValidationService sut)
            {
                IProduct product = new ProductFaker().Generate();

                ValidationResult result = sut.Validate(product);

                result.IsValid.Should().BeTrue();
            }
Esempio n. 9
0
            public void ShouldOnlyApplyToPues(
                PieExpiryDiscount sut)
            {
                IEnumerable <IProduct> products = new ProductFaker().Generate(3);

                IEnumerable <Discount> results = sut.CalculateDiscounts(products);

                results.Should().BeEmpty();
            }
            public void ShouldEqualSumOfProductsWhenNoDiscounts(
                DiscountService sut)
            {
                IEnumerable <IProduct> products = new ProductFaker().Generate(3);

                Price result = sut.ApplyDiscounts(products);

                result.Should().Be(products.Sum(p => p.Price));
            }
Esempio n. 11
0
            public void NonPiesShouldBeValid(
                ExpiredPieValidator sut)
            {
                IProduct product = new ProductFaker().Generate();

                ValidationResult result = sut.Validate(product);

                result.IsValid.Should().BeTrue();
            }
            public void CanAddMultipleOfSameProduct(
                Basket sut)
            {
                IProduct product = new ProductFaker().Generate();

                sut.Add(product);
                sut.Add(product);

                sut.Products.Should().BeEquivalentTo(product, product);
            }
Esempio n. 13
0
        public void GetProductFaker_CategoryId_ShouldBelessThanMaxCategoryNumbers()
        {
            var products = ProductFaker.GetProductList(100);

            _output.WriteLine(JsonConvert.SerializeObject(products, Formatting.Indented));

            var result = products.All(p => p.SubCategory.Id == p.SubCategoryId);

            Assert.True(result);
        }
Esempio n. 14
0
        public async Task <IActionResult> Generate([FromForm] int count)
        {
            ProductFaker productFaker = new ProductFaker();
            IEnumerable <ProductWriteModel> generatedProducts = productFaker.Generate(count);

            await Task.WhenAll(
                generatedProducts.Select(this.productRepository.Create));

            return(this.RedirectToAction("Index"));
        }
Esempio n. 15
0
        public void GetProductFaker_AllSubCategoryId_ShouldBeIncluded()
        {
            var products = ProductFaker.GetProductList(100);

            var result = products.GroupBy(p => p.SubCategoryId).OrderBy(g => g.Key).Select(g => (int)g.Key);
            var totalSubCategoryNumbers = Enum.GetNames(typeof(SubCategoryConstants)).Length;
            var subCategoryIdList       = Enumerable.Range(0, totalSubCategoryNumbers);

            _output.WriteLine(JsonConvert.SerializeObject(subCategoryIdList));

            Assert.Equal(JsonConvert.SerializeObject(result), JsonConvert.SerializeObject(subCategoryIdList));
        }
Esempio n. 16
0
        public void PurchaseItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos()
        {
            // Arange && Act
            Purchase purchase = PurchaseFaker.GenerateFaker().Generate();
            Product  product  = ProductFaker.GenerateFaker().Generate();

            Func <PurchaseItem> func1 = () => new PurchaseItem(0, 1, purchase, product);
            Func <PurchaseItem> func2 = () => new PurchaseItem(1, 0, purchase, product);

            // Assert
            func1.Should().Throw <DomainException>();
            func2.Should().Throw <DomainException>();
        }
        public void OutputItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos()
        {
            // Arange && Act
            Output  output  = OutputFaker.GenerateFaker().Generate();
            Product product = ProductFaker.GenerateFaker().Generate();

            Func <OutputItem> func1 = () => new OutputItem(0, 1, output, product);
            Func <OutputItem> func2 = () => new OutputItem(1, 0, output, product);

            // Assert
            func1.Should().Throw <DomainException>();
            func2.Should().Throw <DomainException>();
        }
Esempio n. 18
0
        public void AdjustmentItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos()
        {
            // Arange && Act
            Adjustment adjustment = AdjustmentFaker.GenerateFaker().Generate();
            Product    product    = ProductFaker.GenerateFaker().Generate();

            Func <AdjustmentItem> func1 = () => new AdjustmentItem(0, 1, adjustment, product);
            Func <AdjustmentItem> func2 = () => new AdjustmentItem(1, 0, adjustment, product);

            // Assert
            func1.Should().Throw <DomainException>();
            func2.Should().Throw <DomainException>();
        }
Esempio n. 19
0
        public void PurchaseItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem()
        {
            // Arange && Act
            Purchase purchase = PurchaseFaker.GenerateFaker().Generate();
            Product  product  = ProductFaker.GenerateFaker().Generate();

            PurchaseItem item = new PurchaseItem(10, 2, purchase, product);

            // Act
            decimal value = item.CalculteValue();

            // Assert
            value.Should().Be(20);
        }
        public void OutputItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem()
        {
            // Arange && Act
            Output  output  = OutputFaker.GenerateFaker().Generate();
            Product product = ProductFaker.GenerateFaker().Generate();

            OutputItem item = new OutputItem(10, 2, output, product);

            // Act
            decimal value = item.CalculteValue();

            // Assert
            value.Should().Be(20);
        }
Esempio n. 21
0
        public void AdjustmentItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem()
        {
            // Arange && Act
            Adjustment adjustment = AdjustmentFaker.GenerateFaker().Generate();
            Product    product    = ProductFaker.GenerateFaker().Generate();

            AdjustmentItem item = new AdjustmentItem(10, 2, adjustment, product);

            // Act
            decimal value = item.CalculteValue();

            // Assert
            value.Should().Be(20);
        }
Esempio n. 22
0
        /// <summary>
        /// Generates products according to the given quantity with assigned concrete subcategory and category
        /// </summary>
        /// <param name="quantity">Number of products</param>
        /// <returns>products with assigned concrete subcategory and category</returns>
        public IEnumerable <Product> Generate(int quantity)
        {
            var subcategory = new SubcategoryFaker().UsePrivateConstructor().Generate();
            var category    = new CategoryFaker().UsePrivateConstructor().Generate();

            for (int i = 0; i < quantity; i++)
            {
                var product = new ProductFaker().UsePrivateConstructor().Generate();
                product.SetSubcategory(subcategory);
                product.Subcategory.SetCategory(category);

                yield return(product);
            }
        }
            public void ShouldReturnFailedWhenProductNotValid(
                [Frozen] Mock <IProductValidationService> productValidationService,
                Basket sut)
            {
                IProduct product = new ProductFaker().Generate();

                productValidationService
                .Setup(service => service.Validate(product))
                .Returns(new FluentValidation.Results.ValidationResult(new[] { new FluentValidation.Results.ValidationFailure("Test", "Test failure") }));

                AddResult result = sut.Add(product);

                result.Success.Should().BeFalse();
            }
Esempio n. 24
0
        private async Task <CatalogApiDbContext> SetupInitialDB(CatalogApiDbContext context)
        {
            // this make sure clearing up the data from previous test
            context.Database.EnsureDeleted();
            // recreate database for current test
            context.Database.EnsureCreated();
            // 1.2. seed test data
            var productsTestData = ProductFaker.GetProductList(50);

            // wrap with Async IQueryable and add it to context
            context.AddRange(productsTestData);
            await context.SaveChangesAsync();

            return(context);
        }
            public void ProductsShouldOnlyBeValidForOneDiscount(
                DiscountService sut)
            {
                IProduct product = new ProductFaker().Generate();

                Price            discountPrice = new Price(product.Price * 0.1m);
                IProductDiscount discount      = new FakeProductDiscount(discountPrice, product);

                // Adding the same discount twice, to it would apply to the product multiple times,
                sut.AddProductDiscount(discount);
                sut.AddProductDiscount(discount);

                Price result = sut.ApplyDiscounts(new[] { product });

                result.Should().Be(new Price(product.Price - discountPrice));
            }
        public void OutputItem_Update_DeveAtualizarCorretamenteOItemQuandoInformadoValoresValidos()
        {
            // Arange && Act
            Output  output     = OutputFaker.GenerateFaker().Generate();
            Product product    = ProductFaker.GenerateFaker().Generate();
            Product newProduct = ProductFaker.GenerateFaker().Generate();

            OutputItem item = new OutputItem(10, 2, output, product);

            // Act
            item.Update(10, 5, newProduct);

            // Assert
            item.Amount.Should().Be(10);
            item.Value.Should().Be(5);
        }
Esempio n. 27
0
        public void PurchaseItem_Update_DeveAtualizarCorretamenteOItemQuandoInformadoValoresValidos()
        {
            // Arange && Act
            Purchase purchase   = PurchaseFaker.GenerateFaker().Generate();
            Product  product    = ProductFaker.GenerateFaker().Generate();
            Product  newProduct = ProductFaker.GenerateFaker().Generate();

            PurchaseItem item = new PurchaseItem(10, 2, purchase, product);

            // Act
            item.Update(10, 5, newProduct);

            // Assert
            item.Amount.Should().Be(10);
            item.Value.Should().Be(5);
        }
            public void ShouldApplyDiscountToValidProducts(
                DiscountService sut)
            {
                // product1 is valid for discount, product2 is not.
                ProductFaker productFaker = new ProductFaker();
                IProduct     product1     = productFaker.Generate();
                IProduct     product2     = productFaker.Generate();

                Price            discountPrice = new Price(product2.Price * 0.5m);
                IProductDiscount discount      = new FakeProductDiscount(discountPrice, product2);

                sut.AddProductDiscount(discount);

                Price result = sut.ApplyDiscounts(new[] { product1, product2 });

                result.Should().Be(new Price(product1.Price + discountPrice));
            }
        public void OutputItem_Update_DeveRetornarDomainExceptionAoTentarAtualizarComValoresInvalidos()
        {
            // Arange && Act
            Output  output     = OutputFaker.GenerateFaker().Generate();
            Product product    = ProductFaker.GenerateFaker().Generate();
            Product newProduct = ProductFaker.GenerateFaker().Generate();

            OutputItem item = new OutputItem(10, 2, output, product);

            // Act
            Action action1 = () => item.Update(0, 5, newProduct);
            Action action2 = () => item.Update(1, 0, newProduct);

            // Assert
            action1.Should().Throw <DomainException>();
            action2.Should().Throw <DomainException>();
        }
Esempio n. 30
0
        private static List <Domain.App.Product> GenerateProductsListFromFaker(int count)
        {
            var products = new List <Domain.App.Product>();

            for (var i = 0; i < count; i++)
            {
                var fakeProduct = new ProductFaker().Generate();

                products.Add(new Product()
                {
                    Name   = fakeProduct.Name,
                    Stock  = fakeProduct.Stock,
                    Prices = GenerateListOfPriceFromFaker(1)
                });
            }
            return(products);
        }