public void TestSingleDiscount()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            var barcodes = new List <string>();

            barcodes.Add("01");
            barcodes.Add("02");

            km.TwoProductDiscount(barcodes, 2.99m);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1.0m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 4.0m));


            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(1, discountProducts.Count);
            Assert.AreEqual("Discount-01-02", discountProducts[0].Description);
            Assert.AreEqual(-2.01m, discountProducts[0].Amount);
        }
        public void TestNoDiscount()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("03");

            km.TwoProductDiscount(barcodes, 2.99m);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1.0m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 4.0m));


            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsEmpty(discountProducts);
        }
        public void TestQuantityCombinationDiscountSingleProduct()
        {
            // test
            var discountProducts = new List <IProduct>();
            var km       = new KortingsManager();
            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("01");
            km.CombinationDiscount(barcodes, 5, 0.10m);
            var product1 = new BarcodeEventArgs(new Product("02", "Test product 02!", 1m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);

            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(1, discountProducts.Count);
            Assert.AreEqual("D-", discountProducts[0].Barcode);
            Assert.AreEqual(-0.50m, discountProducts[0].Amount);
        }
        public void TestQuantityCombinationNoDiscount()
        {
            // test
            var discountProducts = new List <IProduct>();
            var km       = new KortingsManager();
            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("03");

            km.CombinationDiscount(barcodes, 4, 0.2m);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 100m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 1.4m));
            var product3 = new BarcodeEventArgs(new Product("03", "Test product 03!", 11m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product3);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product3);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsEmpty(discountProducts);
        }
Exemple #5
0
        public void TestSingleDiscounWithCheckOutAfter3()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            km.QuantityThreeDiscount();
            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);

            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(1, discountProducts.Count);
            Assert.AreEqual(-0.75m, discountProducts[0].Amount);
            Assert.AreEqual("DISCOUNT ON" + product1.Product.Description, discountProducts[0].Description);

            Assert.AreEqual(2, product1.Product.Amount + product1.Product.Amount);
        }
        public void TestNoDiscounWithCheckOutAfter4()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("01");

            km.CombinationDiscountOfProduct(barcodes, 5);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1.76m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 4m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsEmpty(discountProducts);
        }
Exemple #7
0
        public void TestDiscountTwiseDifferentGetProducts()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            km.QuantityThreeDiscount();
            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 1.4m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);

            km.RaiseBarcodeScaned(null, product2);
            km.RaiseBarcodeScaned(null, product2);
            km.RaiseBarcodeScaned(null, product2);

            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(2, discountProducts.Count);
            Assert.AreEqual("01", discountProducts[0].Barcode);
            Assert.AreEqual("02", discountProducts[1].Barcode);


            Assert.AreEqual(-0.75m, discountProducts[0].Amount);
            Assert.AreEqual(-1.05m, discountProducts[1].Amount);

            Assert.AreEqual("DISCOUNT ON" + product1.Product.Description, discountProducts[0].Description);
            Assert.AreEqual("DISCOUNT ON" + product2.Product.Description, discountProducts[1].Description);
        }
        public void TestSingleDiscounWithCheckOutAfter6()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            var barcodes = new List <string>();

            barcodes.Add("02");
            barcodes.Add("01");

            km.CombinationDiscountOfProduct(barcodes, 5);

            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1.76m));
            var product2 = new BarcodeEventArgs(new Product("02", "Test product 02!", 4m));
            var product3 = new BarcodeEventArgs(new Product("03", "Test product 02!", 800m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product2);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product3);


            // validate
            Assert.IsNotEmpty(discountProducts);
            Assert.AreEqual(1, discountProducts.Count);
            Assert.AreEqual(-1.76m, discountProducts[0].Amount);
            Assert.AreEqual("discount-cheapest-01-02-01-02-01-", discountProducts[0].Description);
        }
Exemple #9
0
        public void TestNODiscounWithCheckOutAfter2()
        {
            // prepare
            var discountProducts = new List <IProduct>();
            var km = new KortingsManager();

            km.QuantityThreeDiscount();
            var product1 = new BarcodeEventArgs(new Product("01", "Test product 01!", 1m));

            km.DiscountAProduct += (sender, e) =>
            {
                discountProducts.Add(e.Product);
            };

            // test
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);
            km.RaisePayment(null, null);
            km.RaiseBarcodeScaned(null, product1);
            km.RaiseBarcodeScaned(null, product1);

            // validate
            Assert.IsEmpty(discountProducts);
        }