public void GetTotalPrice_IfOfferExists_ShouldApplyDiscount()
        {
            // arrange
            var offerMock = new Mock <IOfferOrchestrator>();

            offerMock.Setup(mock => mock.GetOffer("B15"))
            .Returns(new ItemOffer {
                OfferPrice = 0.45m, Quantity = 2, SKU = "B15"
            });
            offerMock.Setup(mock => mock.GetOffer("A99"))
            .Returns(new ItemOffer {
                OfferPrice = 1.30m, Quantity = 3, SKU = "A99"
            });
            var orchestrator = new CheckoutOrchestrator(new Mock <ItemOrchestrator>().Object, offerMock.Object, new Mock <DiscountOrchestrator>().Object);
            var expected     = 4.05m;

            orchestrator._listCheckout = new List <Checkout>()
            {
                checkoutItems
            };
            //act
            var actual = orchestrator.GetTotalPriceWithDiscount(checkoutId);

            //assert

            actual.Should().Be(expected);
        }
        public void GetTotalPrice_IfNoOfferExists_ShouldNotApplyDiscount()
        {
            // arrange
            var orchestrator = new CheckoutOrchestrator(new Mock <ItemOrchestrator>().Object, new Mock <IOfferOrchestrator>().Object, new Mock <DiscountOrchestrator>().Object);
            var expected     = checkoutItems.Items.Sum(p => p.Price);

            orchestrator._listCheckout = new List <Checkout>()
            {
                checkoutItems
            };
            //act
            var actual = orchestrator.GetTotalPriceWithDiscount(checkoutId);

            //assert

            actual.Should().Be(expected);
        }