Ejemplo n.º 1
0
            public void Should_return_false_for_less_than_x_items()
            {
                var subject   = new BuyXItemsGetYPercentOff("item-1", 2, 0.25m);
                var orderitem = new OrderItem {
                    Identifier = subject.ItemId, ItemCost = 20m, Quantity = 1
                };

                Assert.IsFalse(subject.MatchesItem(orderitem));
            }
Ejemplo n.º 2
0
            public void Should_return_false_for_non_matched_item()
            {
                var subject   = new BuyXItemsGetYPercentOff("item-1", 2, 0.25m);
                var orderitem = new OrderItem {
                    Identifier = "item-2", ItemCost = 20m, Quantity = 2
                };

                Assert.IsFalse(subject.MatchesItem(orderitem));
            }
Ejemplo n.º 3
0
            public void Should_throw_ArgumentException_for_non_matching_orderitem()
            {
                var subject       = new BuyXItemsGetYPercentOff("item-1", 3, 0.25m);
                var incorrectItem = new OrderItem()
                {
                    Identifier = "item-2", ItemCost = 10m, Quantity = 1
                };

                Assert.Throws <ArgumentException>(() => subject.CalculateItemPrice(incorrectItem));
            }
Ejemplo n.º 4
0
            public void When_having_exactly_x_items_the_discount_should_apply_to_all_of_them()
            {
                var subject = new BuyXItemsGetYPercentOff("item-1", 3, 0.25m);
                var item    = new OrderItem {
                    Identifier = "item-1", ItemCost = 10m, Quantity = 3
                };

                var actual = subject.CalculateItemPrice(item);

                Assert.That(actual, Is.EqualTo(3 * 7.5m));
            }
Ejemplo n.º 5
0
            public void When_having_not_exact_sets_of_x_items_the_remaining_items_should_cost_full_price()
            {
                var subject = new BuyXItemsGetYPercentOff("item-1", 3, 0.25m);
                var item    = new OrderItem {
                    Identifier = "item-1", ItemCost = 10m, Quantity = 5
                };

                var actual = subject.CalculateItemPrice(item);

                Assert.That(actual, Is.EqualTo(3 * 7.5m + 2 * 10m));
            }
Ejemplo n.º 6
0
            public void Should_return_true_for_at_least_x_items()
            {
                var subject   = new BuyXItemsGetYPercentOff("item-1", 2, 0.25m);
                var orderitem = new OrderItem {
                    Identifier = subject.ItemId, ItemCost = 20m, Quantity = 2
                };
                var secondOrderitem = new OrderItem {
                    Identifier = subject.ItemId, ItemCost = 20m, Quantity = 2
                };

                Assert.IsTrue(subject.MatchesItem(orderitem));
                Assert.IsTrue(subject.MatchesItem(secondOrderitem));
            }