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); }
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); }
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); }
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); }