public void Discounting_5Cost_3Discont_2Result()
        {
            //arrange
            //var basket = new Basket();
            var product   = RandomData.Create <Candy>();
            var discounts = RandomData.Create <Dictionary <int, Discount> >();
            var basket    = FakeUtils.Resolve <Basket>();

            basket.FakeMethod(nameof(Basket.GetDiscount), 3);
            basket.FakeMethod(nameof(Basket.GetCost), 5);

            //act
            var totalCost = basket.Discounting(product, discounts);

            //assert
            Assert.Equal(2, totalCost);
        }
        public void GetDiscount_NoDiscount_0Result()
        {
            //arrange
            var basket    = new Basket();
            var discounts = new Dictionary <int, Discount>();
            var discount  = FakeUtils.Resolve <Discount>().FakeMethod(nameof(Discount.CountPriceWithDiscount), 1);

            discounts.Add(1, discount);
            var product = RandomData.Create <Candy>();

            product.Id = 2;

            //act
            var totalDiscount = basket.GetDiscount(product, discounts);

            //assert
            Assert.Equal(0, totalDiscount);
        }
        public void GetDiscount_IsPresent_Result(int discountCost, int productCount, int result)
        {
            //arrange
            var basket    = new Basket();
            var discounts = new Dictionary <int, Discount>();
            var discount  = FakeUtils.Resolve <Discount>().FakeMethod(nameof(Discount.CountPriceWithDiscount), discountCost);

            discounts.Add(1, discount);
            var product = RandomData.Create <Candy>();

            product.Id    = 1;
            product.Count = productCount;

            //act
            var totalDiscount = basket.GetDiscount(product, discounts);

            //assert
            Assert.Equal(result, totalDiscount);
        }