public void Should_ThrowException_When_CreatingInvoiceWithNullProductList()
        {
            // Arrange
            var orderInvoiceManager = new OrderInvoiceManager();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => orderInvoiceManager.CreateInvoice(null));
        }
        public void Should_ThrowException_When_CreatingInvoiceWithEmptyProductList()
        {
            // Arrange
            var orderInvoiceManager = new OrderInvoiceManager();

            // Act & Assert
            var exception = Assert.Throws <ArgumentException>(() => orderInvoiceManager.CreateInvoice(new List <Product>(0)));

            Assert.Equal("Value cannot be an empty collection.\r\nParameter name: products", exception.Message);
        }
        public void Should_ReturnExpectedAmounts_When_CalculatingTaxes(List <Product> products, decimal expectedTaxAmount, decimal expectedTotalAmount)
        {
            // Arrange
            var orderInvoiceManager = new OrderInvoiceManager();
            var orderInvoice        = orderInvoiceManager.CreateInvoice(products);

            // Act
            var totalTaxes  = orderInvoiceManager.GetTotalTaxes(orderInvoice);
            var totalAmount = orderInvoiceManager.GetTotalAmount(orderInvoice);

            // Assert
            Assert.Equal(expectedTaxAmount, totalTaxes);
            Assert.Equal(expectedTotalAmount, totalAmount);
        }
Example #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("INPUT:");

            var i = 1;

            foreach (var productList in InputOrders)
            {
                Console.WriteLine();
                Console.WriteLine($"Input {i++}:");

                foreach (var productString in productList)
                {
                    Console.WriteLine(productString);
                }
            }

            i = 1;

            Console.WriteLine();
            Console.WriteLine("OUTPUT:");

            using (new CultureOverride(CultureInfo.InvariantCulture))
            {
                foreach (var productList in InputOrders)
                {
                    Console.WriteLine();
                    Console.WriteLine($"Output {i++}:");

                    var productParser       = new ProductParser();
                    var orderInvoiceManager = new OrderInvoiceManager();

                    var orderInvoice = orderInvoiceManager.CreateInvoice(productParser.ParseAll(productList));

                    foreach (var computedProduct in orderInvoice.Products)
                    {
                        Console.WriteLine(computedProduct);
                    }

                    Console.WriteLine($"Sales Taxes: {orderInvoiceManager.GetTotalTaxes(orderInvoice).ToString("0.00")}");
                    Console.WriteLine($"Total: {orderInvoiceManager.GetTotalAmount(orderInvoice).ToString("0.00")}");
                }

                Console.WriteLine();
                Console.Write("Press any key to exit...");

                Console.ReadLine();
            }
        }
        public void Should_ReturnExpectedAmounts_When_CalculatingTaxes(Product product, decimal expectedTaxAmount, decimal expectedAmount)
        {
            // Arrange
            var orderInvoiceManager = new OrderInvoiceManager();

            // Act
            var orderInvoice = orderInvoiceManager.CreateInvoice(new List <Product> {
                product
            });

            // Assert
            var computedProduct = orderInvoice.Products[0];

            Assert.Equal(expectedTaxAmount, computedProduct.TaxAmount);
            Assert.Equal(expectedAmount, computedProduct.Amount);
        }
        public void Should_ReturnExpectedString_When_PrintingComputedProduct(string productInput, string expectedOutput)
        {
            using (new CultureOverride(CultureInfo.InvariantCulture))
            {
                // Arrange
                var productParser       = new ProductParser();
                var orderInvoiceManager = new OrderInvoiceManager();

                // Act
                var orderInvoice = orderInvoiceManager.CreateInvoice(productParser.ParseAll(new List <string> {
                    productInput
                }));

                // Assert
                Assert.Equal(1, orderInvoice.Products.Count);
                Assert.Equal(expectedOutput, orderInvoice.Products.Single().ToString());
            }
        }