Пример #1
0
        public void Test_5_cannot_add_payment_when_balance_greater_than_0()
        {
            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.AddPayment(new Payment(999));

            Assert.False(result.IsSuccess, "Was able to add payment to overpaid sale");
            Assert.Equal(9, sut.Balance);
        }
Пример #2
0
        public void Test_7_cannot_pay_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.AddPayment(new Payment(item1.TotalPrice));

            Assert.False(result.IsSuccess, "Was able to pay on paid sale");
            Assert.Equal(0, sut.Balance);
            Assert.Equal(item1.TotalPrice, sut.AmountPaid);
        }
Пример #3
0
        public void Test_5_cannot_add_payment_when_balance_0()
        {
            // expected to fail until exercise complete

            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.AddPayment(new Payment(10));

            Assert.False(result.IsSuccess, "Was able to add payment on paid sale");
            Assert.Equal(0, sut.Balance);
        }
Пример #4
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);
        }
Пример #5
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);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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);
        }
Пример #9
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);
        }
Пример #10
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");
        }
Пример #11
0
        public void Test_6_cannot_give_change_when_amount_exceeds_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 expectedBalance = sut.Balance;

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

            Assert.False(result.IsSuccess, "Able to add change to sale with negative balance");
            Assert.Equal(expectedBalance, sut.Balance);
        }
Пример #12
0
        internal void AddPayment(double paymentAmount)
        {
            var result = Sale.AddPayment(new Payment(paymentAmount));

            if (result.IsSuccess)
            {
                AddLogEntry($"Payment: {_paymentAmount:C}");
                SetDefaultChangeAmount();
            }
            else
            {
                LogActionError("Add payment", result);
            }
        }
Пример #13
0
        public void Test_7_cannot_delete_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.DeleteItem(item1.Product.Id);

            Assert.False(result.IsSuccess, "Was able to delete item on paid sale");
            Assert.Equal(0, sut.Balance);
            Assert.Equal(1, sut.SaleItems.Count);
            Assert.Equal(1, sut.TotalItems);
        }
Пример #14
0
        public void Test_7_cannot_change_item_quantity_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.SetItemQuantity(item1.Product.Id, 999);

            Assert.False(result.IsSuccess, "Was able to change item quantity on paid sale");
            Assert.Equal(0, sut.Balance);
            Assert.Equal(1, sut.SaleItems.Count);
            Assert.Equal(1, sut.TotalItems);
        }
Пример #15
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);
        }
Пример #16
0
        public void Test_7_cannot_give_change_on_paid_sale()
        {
            // expected to fail until exercise complete

            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(5.55));

            Assert.False(result.IsSuccess, "Was able to give change on paid sale");
            Assert.Equal(0, sut.Balance);
            Assert.Equal(0, sut.ChangeGiven);
        }
Пример #17
0
        public void Test_7_cannot_add_item_to_paid_sale()
        {
            // expected to fail until exercise complete

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