public void OneTimeSetUp()
 {
     _sale = new Sale(new ItemBuilder());
     _sale.AddItem("1245");
     _sale.AddItem("99999");
     _sale.AddItem("839");
 }
Пример #2
0
        public void Test_8c_cannot_add_items_on_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.AddItem(new SaleItem(new Product(2, "product2", "product2", "product2s", 2.22, "test2"), 2));

            Assert.False(result.IsSuccess, "Added items to cancelled sale");
            Assert.Equal(1, sut.TotalItems);
        }
Пример #3
0
        public void Test_8_can_cancel()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);
            var item2 = new SaleItem(new Product(2, "product2", "product2", "product2s", 2.22, imageClassName: "test"), 2);

            sut.AddItem(item1);
            sut.AddItem(item2);

            var result = sut.Cancel();

            Assert.True(result.IsSuccess, "Was unable to cancel open sale");
            Assert.True(sut.IsCancelled, "Successfully cancelled sale not marked cancelled");
        }
Пример #4
0
        public void SaleTest()
        {
            var album1 = new Album(null, null, "Test Album 1", genres[0].Id);

            album1.Genre = genres[0];
            var album2 = new Album(null, null, "Test Album 2", genres[1].Id);

            album2.Genre = genres[1];
            var album3 = new Album(null, null, "Test Album 2", genres[2].Id);

            album3.Genre = genres[2];
            var album4 = new Album(null, null, "Test Album 2", genres[3].Id);

            album4.Genre = genres[3];
            var sale      = new Sale(null, "Test Customer");
            var saleItem1 = new SaleItem(sale.Id, album1.Id);

            saleItem1.Album = album1;
            saleItem1.Sale  = sale;
            var saleItem2 = new SaleItem(sale.Id, album2.Id);

            saleItem2.Album = album2;
            saleItem2.Sale  = sale;
            var saleItem3 = new SaleItem(sale.Id, album3.Id);

            saleItem3.Album = album3;
            saleItem3.Sale  = sale;
            var saleItem4 = new SaleItem(sale.Id, album4.Id);

            saleItem4.Album = album4;
            saleItem4.Sale  = sale;

            saleItem1.CalcCashback();
            saleItem2.CalcCashback();
            saleItem3.CalcCashback();
            saleItem4.CalcCashback();

            sale.AddItem(saleItem1);
            sale.AddItem(saleItem2);
            sale.AddItem(saleItem3);
            sale.AddItem(saleItem4);

            sale.TotalCashback = sale.Items.Sum(s => s.CashbackValue);
            sale.TotalValue    = sale.Items.Sum(s => s.Album.Value);

            Assert.NotNull(sale);
            Assert.Equal((album1.Value + album2.Value + album3.Value + album4.Value), sale.TotalValue);
            Assert.Equal((saleItem1.CashbackValue + saleItem2.CashbackValue + saleItem3.CashbackValue + saleItem4.CashbackValue), sale.TotalCashback);
        }
Пример #5
0
        public void Test_1a_can_add_items_when_over_paid()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);
            var item2 = new SaleItem(new Product(2, "product2", "product2", "product2s", 2.22, imageClassName: "test"), 2);

            sut.AddItem(item1);
            sut.AddItem(item2);
            sut.AddPayment(new Payment(4.44));

            var result = sut.AddItem(item1);

            Assert.True(result.IsSuccess, "Was not able to add items to over paid sale");
            Assert.Equal(4, sut.TotalItems);
        }
Пример #6
0
        public void Test_7_cannot_add_item_to_paid_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.00, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(item1.TotalPrice));

            var result = sut.AddItem(new SaleItem(new Product(2, "product2", "product2", "product2s", 2.00, imageClassName: "test2"), 2));

            Assert.False(result.IsSuccess, "Was able to add item to paid sale");
            Assert.Equal(0, sut.Balance);
            Assert.Equal(1, sut.SaleItems.Count);
            Assert.Equal(1, sut.TotalItems);
        }
Пример #7
0
        public void Test_1a_items_can_be_added()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);
            var item2 = new SaleItem(new Product(2, "product2", "product2", "product2s", 2.22, imageClassName: "test"), 2);

            var result1 = sut.AddItem(item1);
            var result2 = sut.AddItem(item2);

            Assert.True(result1.IsSuccess, "Unable to add item to sale");
            Assert.True(result2.IsSuccess, "Unable to add 2nd item to sale");
            Assert.Equal(2, sut.SaleItems.Count);
            Assert.Equal(item1, sut.SaleItems.First());
            Assert.Equal(item2, sut.SaleItems.Last());
        }
Пример #8
0
 protected void btnAgregar_Click(object sender, EventArgs e)
 {
     if (txtProducto.Text.Length > 0 && txtCant.Text.Length > 0)
     {
         try
         {
             p = products.FetchProduct(txtProducto.Text);
             int disponibles = new InventoryDataHandler().RetrieveStocks(p);
             if (disponibles >= int.Parse(txtCant.Text))
             {
                 ItemEntry entry = new ItemEntry(p, int.Parse(txtCant.Text));
                 venta.AddItem(entry);
                 venta.montoTotal += entry.monto;
                 venta.productos  += entry.cantidad;
                 Session["Venta"]  = venta;
                 UpdateGrid();
             }
             else
             {
                 //Alertar existencias insuficientes
             }
         } catch (Exception ex)
         {
             Debug.Write(ex.Message);
         }
     }
 }
Пример #9
0
        private static void AddItemToSale(string sku)
        {
            if (string.IsNullOrWhiteSpace(sku))
            {
                _lastSkuWasValid = false;
                _sale            = new Sale(new ItemBuilder());
                return;
            }

            try
            {
                _lastSkuWasValid = true;
                _sale.AddItem(sku);
            }
            catch (ArgumentException ex)
            {
                if (ex.Message == $"The given SKU: {sku} is invalid.")
                {
                    _lastSkuWasValid = false;
                    Console.Clear();
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadLine();
                }
            }
        }
Пример #10
0
        public async Task <CommandResult> ExecuteAsync(CashbackCommandsHandler handler)
        {
            var obj = new Sale(Id, CustomerName);

            foreach (var item in Items)
            {
                var album = await handler.DbContext
                            .Albums
                            .Include(i => i.Genre)
                            .ThenInclude(t => t.Cashbacks)
                            .Where(w => w.Id == item.AlbumId)
                            .FirstOrDefaultAsync();

                if (album == null)
                {
                    return(await Task.FromResult(new CommandResult(ErrorCode.NotFound, $"Album with id {item.AlbumId} was not found")));
                }
                var saleItem = new SaleItem(obj.Id, album.Id);
                saleItem.Sale  = obj;
                saleItem.Album = album;
                saleItem.CalcCashback();
                obj.AddItem(saleItem);
            }

            obj.TotalValue    = obj.Items.Sum(s => s.Album.Value);
            obj.TotalCashback = obj.Items.Sum(s => s.CashbackValue);

            await handler.DbContext.Sales.AddAsync(obj);

            await handler.DbContext.SaleItems.AddRangeAsync(obj.Items);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(await Task.FromResult(new CommandResult(rows, ErrorCode.None)));
        }
Пример #11
0
        public void MakeOrder_PaymentIsCompleted_PaymentStateCompleted()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product fysiek   = new PhysicalProduct("fiets", 9.99f, "dit is een fietsje", new Tuple <float, float, float>(1, 2, 3), 7);
            Product digitaal = new DigitalProduct("download", 15f, "hier mee kan je iets downloaden", "www.blah.nl");

            // Act
            testSale.AddItem(fysiek, "1");
            testSale.AddItem(digitaal, "69");
            testSale.SetCustomerInfo("Floris", "*****@*****.**", CustomerInfo.PaymentMethod.CreditCard, "Utrecht", "Androsdreef 88", "3562XC");
            var value = Payment.state;

            // Assert
            Assert.AreEqual(PaymentState.Completed, value);
        }
Пример #12
0
        // method name syntax: 'subject'_'condition'_'event'
        public void IsFilled_after_addtion()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product fysiek   = new PhysicalProduct("fiets", 9.99f, "dit is een fietsje", new Tuple <float, float, float>(1, 2, 3), 7);
            Product digitaal = new DigitalProduct("download", 15f, "hier mee kan je iets downloaden", "www.blah.nl");

            // Act
            testSale.AddItem(fysiek, "3");
            testSale.AddItem(digitaal, "5");
            var value = testSale.IsFilled();

            // Assert

            Assert.AreEqual(true, value);
        }
Пример #13
0
        public void AddNewItem_WhenAllreadyPresent_AdditionOfQuantity()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product fysiek   = new PhysicalProduct("fiets", 9.99f, "dit is een fietsje", new Tuple <float, float, float>(1, 2, 3), 7);

            // Act
            testSale.AddItem(fysiek, "1");
            var een = testSale.GetQuantity();

            testSale.AddItem(fysiek, "3");
            var twee = testSale.GetQuantity();

            // Assert
            Assert.AreEqual(een + 3, twee);
        }
Пример #14
0
        public void GetPrice_AfterDeletingCart_Zero()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product fysiek   = new PhysicalProduct("fiets", 9.99f, "dit is een fietsje", new Tuple <float, float, float>(1, 2, 3), 7);
            Product digitaal = new DigitalProduct("download", 15f, "hier mee kan je iets downloaden", "www.blah.nl");

            // Act
            testSale.AddItem(fysiek, "3");
            testSale.AddItem(digitaal, "5");
            testSale.Cancel();
            var value = testSale.GetPrice();

            // Assert

            Assert.AreEqual(0, value);
        }
Пример #15
0
        public void Test_8_can_cancel()
        {
            // expected to fail until exercise complete

            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);
            var item2 = new SaleItem(new Product(2, "product2", "product2", "product2s", 2.22, imageClassName: "test"), 2);

            sut.AddItem(item1);
            sut.AddItem(item2);

            var result = sut.Cancel();

            Assert.True(result.IsSuccess, "Was unable to cancel open sale");
            // TODO Need Sale.IsCancelled
            Assert.True(false /*TODO isCancelled*/, "Successfully cancelled sale not marked cancelled");
        }
Пример #16
0
        public void Test_2_can_pay()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);

            var result = sut.AddPayment(new Payment(1.11));

            Assert.True(result.IsSuccess, "Unable to pay");
            Assert.Equal(0, sut.Balance);
        }
Пример #17
0
        public void Test_8c_cannot_cancel_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.Cancel();

            Assert.False(result.IsSuccess, "Cancelled a previously cancelled sale");
        }
Пример #18
0
        public void Test_1c_item_can_be_deleted()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);

            var result = sut.DeleteItem(item1.Product.Id);

            Assert.True(result.IsSuccess, "Unable to delete item");
            Assert.False(sut.SaleItems.Any());
        }
Пример #19
0
        public void AddCartItem_ShippingForPhysical_ChangesBool()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product fysiek   = new PhysicalProduct("fiets", 9.99f, "dit is een fietsje", new Tuple <float, float, float>(1, 2, 3), 7);

            // Act
            testSale.AddItem(fysiek, "69");
            var heeftFysiek = testSale.ContainsPhysical();

            // Assert
            Assert.AreEqual(true, heeftFysiek);
        }
Пример #20
0
        public void AddCartItem_NoShippingForDigital_ChangesBool()
        {
            // Arrange
            Sale    testSale = new Sale();
            Product digitaal = new DigitalProduct("download", 15f, "hier mee kan je iets downloaden", "www.blah.nl");

            // Act
            testSale.AddItem(digitaal, "69");
            var heeftFysiek = testSale.ContainsPhysical();

            // Assert
            Assert.AreEqual(false, heeftFysiek);
        }
Пример #21
0
        public void Test_8c_cannot_change_item_quantity_on_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.SetItemQuantity(item1.Product.Id, 123);

            Assert.False(result.IsSuccess, "Changed item quantity on cancelled sale");
            Assert.Equal(1, sut.TotalItems);
        }
Пример #22
0
        public void Test_8c_cannot_delete_item_on_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.DeleteItem(item1.Product.Id);

            Assert.False(result.IsSuccess, "Deleted item on cancelled sale");
            Assert.Equal(1, sut.TotalItems);
        }
Пример #23
0
        public void Test_8c_cannot_pay_on_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.AddPayment(new Payment(10));

            Assert.False(result.IsSuccess, "Added payment to cancelled sale");
            Assert.Equal(0, sut.AmountPaid);
        }
Пример #24
0
        public void Test_8c_cannot_give_change_to_cancelled_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.Cancel();

            var result = sut.AddChange(new Change(1.00));

            Assert.False(result.IsSuccess, "Gave change on cancelled sale");
            Assert.Equal(0, sut.ChangeGiven);
        }
Пример #25
0
        public void Test_6_can_give_change_when_amount_equals_payment_balance()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.00, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(50));

            var result = sut.AddChange(new Change(50));

            Assert.True(result.IsSuccess, "Unable to give change when change amount equals payment balance");
            Assert.Equal(item1.TotalPrice * -1, sut.Balance);
        }
Пример #26
0
        public void Test_6_cannot_give_change_on_paid_sale()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.00, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(item1.TotalPrice));

            var result = sut.AddChange(new Change(9.00));

            Assert.False(result.IsSuccess, "Was able to give change on a paid sale");
            Assert.Equal(0, sut.Balance);
        }
Пример #27
0
        public void Test_8b_change_amount_cannot_exceed_payment_balance()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 10.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(5));

            var result = sut.AddChange(new Change(6.00));

            Assert.False(result.IsSuccess, "Added change that exceeds payment balance");
            Assert.Equal(0, sut.ChangeGiven);
        }
Пример #28
0
        public void Test_1b_item_quantity_can_be_changed()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.11, imageClassName: "test"), 1);

            sut.AddItem(item1);

            var result = sut.SetItemQuantity(item1.Product.Id, 2);

            Assert.True(result.IsSuccess, "Unable to change item quantity");
            Assert.Equal(2, sut.SaleItems.First().Quantity);
            Assert.Equal(1, sut.SaleItems.Count);
        }
Пример #29
0
        public void Test_3_can_give_change()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 1.00, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(10));

            var result = sut.AddChange(new Change(9.00));

            Assert.True(result.IsSuccess, "Unable to give change");
            Assert.Equal(0, sut.Balance);
        }
Пример #30
0
        public void Test_8a_cannot_cancel_sale_with_payment_balance()
        {
            var sut   = new Sale(1);
            var item1 = new SaleItem(new Product(1, "product1", "product1", "product1s", 10.11, imageClassName: "test"), 1);

            sut.AddItem(item1);
            sut.AddPayment(new Payment(5));

            var result = sut.Cancel();

            Assert.False(result.IsSuccess, "Cancelled sale with a payment balance");
            Assert.False(sut.IsCancelled, "Successfully cancelled sale not marked cancelled");
        }