Exemple #1
0
        public void Sort_Products_ShouldSortListOfProductsInAscendingOrder()
        {
            // Arrange
            var productBuider = new ProductBuilder();

            productBuider.SetConsumption(3500);

            var result3500 = productBuider.Build();

            productBuider.SetConsumption(4500);
            var result4500 = productBuider.Build();

            productBuider.SetConsumption(6000);
            var result6000 = productBuider.Build();

            Product [] products = new Product[] {
                result3500[0],
                result3500[1],
                result4500[0],
                result4500[1],
                result6000[0],
                result6000[1]
            };

            // Act
            Array.Sort(products, new ProductComparer <Product>());

            // Assert
            Assert.Equal(800, products[0].AnnualCosts);
            Assert.Equal(830, products[1].AnnualCosts);
            Assert.Equal(950, products[2].AnnualCosts);
            Assert.Equal(1050, products[3].AnnualCosts);
            Assert.Equal(1380, products[4].AnnualCosts);
            Assert.Equal(1400, products[5].AnnualCosts);
        }
 public void inserts_are_batched()
 {
     using (var session = SessionFactory.OpenStatelessSession())
         using (var transaction = session.BeginTransaction())
         {
             session.SetBatchSize(2);
             var builder = new ProductBuilder();
             session.Insert(builder.Build());
             session.Insert(builder.Build());
             Logger.Info("the first batch of 2 inserts has been sent to the database now");
             session.Insert(builder.Build());
             session.Insert(builder.Build());
             Logger.Info("the second batch of 2 inserts has been sent to the database now, without flushing the session");
             transaction.Commit();
         }
 }
Exemple #3
0
        public List <Product> GetProducts(ISearchParameters parameters)
        {
            var searchBuilder = new ProductBuilder(parameters);
            var predicate     = searchBuilder.Build();

            return(parameters.EmptyParameters
                ? _context.Products.ToList()
                : _context.Products
                   .Where(predicate)
                   .ToList());
        }
        public void DefaultBuildedProductValues()
        {
            ProductBuilder builderTest     = new ProductBuilder(TEST_ID, TEST_NAME);
            Product        expectedProduct = new Product(TEST_ID, TEST_NAME, ProductSize.Medium, new Price(0, Currency.USD), Color.RED);

            Product factoryOutput = builderTest.Build();

            Assert.Equal(expectedProduct.ID, factoryOutput.ID);
            Assert.Equal(expectedProduct.Name, factoryOutput.Name);
            Assert.Equal(expectedProduct.Size, factoryOutput.Size);
            Assert.Equal(expectedProduct.Price.Value, factoryOutput.Price.Value);
            Assert.Equal(expectedProduct.Price.Currency, factoryOutput.Price.Currency);
            Assert.Equal(expectedProduct.Color, factoryOutput.Color);
        }
        public void should_create_a_product_properly()
        {
            var product = _productBuilder.Build();

            product.Title.Should().Be(_productBuilder.ProductOptions.ProductTitle);
            product.EnglishTitle.Should().Be(_productBuilder.ProductOptions.ProductEnglishTitle);
            product.Overview.AtAGlance.Should().Be(_productBuilder.ProductOptions.AtAGlance);
            product.Overview.Description.Should().Be(_productBuilder.ProductOptions.Description);
            product.IsActive.Should().Be(_productBuilder.ProductOptions.IsActive);
            product.BrandId.Should().Be(_productBuilder.ProductOptions.BrandId);
        }
Exemple #6
0
        public void Build_Products_ShouldCreateListOfProducts(long consumption,
                                                              long expectedAnnualConstsBasic,
                                                              int expectedAnnualConstsPackaged)
        {
            // Arrange
            var productBuider = new ProductBuilder();

            productBuider.SetConsumption(consumption);

            // Act
            Product [] products = productBuider.Build();

            // Assert
            Assert.Equal(2, products.Length);
            Assert.Equal(expectedAnnualConstsBasic, products[0].AnnualCosts);
            Assert.Equal(expectedAnnualConstsPackaged, products[1].AnnualCosts);
        }
Exemple #7
0
        public void Sort_Products_ShouldSortProductsInAscendingOrder(long consumption,
                                                                     long expectedAnnualConstsBasic,
                                                                     int expectedAnnualConstsPackaged)
        {
            // Arrange
            var productBuider = new ProductBuilder();

            productBuider.SetConsumption(consumption);

            // Act
            Product [] products = productBuider.Build();
            Array.Sort(products, new ProductComparer <Product>());

            // Assert
            Assert.Equal(2, products.Length);
            Assert.Equal(expectedAnnualConstsBasic, products[0].AnnualCosts);
            Assert.Equal(expectedAnnualConstsPackaged, products[1].AnnualCosts);
        }
        public void TestProductBuilder()
        {
            ProductBuilder builder = new ProductBuilder();

            builder.Build("Biscuits", "Tuc", -1, 2);
        }
        public async Task <(IEnumerable <Product>, IEnumerable <string>)> ProcessStreamAsync(Stream stream)
        {
            using (var reader = new StreamReader(stream, new UTF8Encoding(false, true), true))
            {
                const char separator = ',';
                string[]   header    = (await reader.ReadLineAsync()).Split(separator);

                int keyIndex           = header.IndexOf("Key");
                int articleCodeIndex   = header.IndexOf("ArtikelCode");
                int colourCodeIndex    = header.IndexOf("ColorCode");
                int descriptionIndex   = header.IndexOf("Description");
                int priceIndex         = header.IndexOf("Price");
                int discountPriceIndex = header.IndexOf("DiscountPrice");
                int deliveryTimeIndex  = header.IndexOf("DeliveredIn");
                int groupIndex         = header.IndexOf("Q1");
                int sizeIndex          = header.IndexOf("Size");
                int colourIndex        = header.IndexOf("Color");

                var count  = 0;
                var errors = new List <string>();

                var products       = new List <Product>();
                var productBuilder = new ProductBuilder();

                return(await Task.Run(async() =>
                {
                    while (!reader.EndOfStream)
                    {
                        count++;
                        string[] line = (await reader.ReadLineAsync()).Split(separator);

                        if (line.Length == 10)
                        {
                            try
                            {
                                var inputData = new InputData
                                {
                                    Key = line[keyIndex],
                                    ArticleCode = line[articleCodeIndex],
                                    ColourCode = line[colourCodeIndex],
                                    Description = line[descriptionIndex],
                                    Price = line[priceIndex],
                                    DiscountPrice = line[discountPriceIndex],
                                    DeliveryTime = line[deliveryTimeIndex],
                                    Group = line[groupIndex],
                                    Size = line[sizeIndex],
                                    Colour = line[colourIndex]
                                };

                                products.Add(productBuilder.Build(inputData));
                            }
                            catch (FormatException e)
                            {
                                errors.Add($"Error parsing line {count}: {e.Message}");
                            }
                            catch (IndexOutOfRangeException e)
                            {
                                throw new ProcessorException("Error processing the header of the input stream.", e);
                            }
                        }
                        else
                        {
                            errors.Add($"Error parsing line {count}: Insufficient number of values.");
                        }
                    }

                    return (products, errors);
                }));
            }
        }