public void When_GetCalled_Return_OkResult()
        {
            PricingRepository pricingRepository = new PricingRepository();
            PricingController pricingController = new PricingController(pricingRepository);

            var okResult = pricingController.Compare(3000);

            Assert.IsType <OkObjectResult>(okResult.Result);
        }
        public async Task CallMediatorWithCorrectParameters()
        {
            var mediator   = new Mock <IMediator>();
            var command    = new CalculatePriceCommand();
            var controller = new PricingController(mediator.Object);

            await controller.Post(command);

            mediator.Verify(x => x.Send(command, default(CancellationToken)), Times.Once());
        }
        public void When_GetCalled_Return_Tariff()
        {
            PricingRepository pricingRepository = new PricingRepository();
            PricingController pricingController = new PricingController(pricingRepository);

            var okResult = pricingController.Compare(3000);
            var items    = Assert.IsType <List <Product> >(((ObjectResult)okResult.Result).Value);

            Assert.Equal(2, items.Count);
        }
        public async Task ReturnJsonResult()
        {
            var mediator             = new Mock <IMediator>();
            var command              = new CalculatePriceCommand();
            var calculatePriceResult = new CalculatePriceResult {
                TotalPrice = 12
            };

            mediator.Setup(x => x.Send(command, default(CancellationToken))).ReturnsAsync(calculatePriceResult);
            var controller = new PricingController(mediator.Object);

            var result = await controller.Post(command);

            Assert.IsAssignableFrom <JsonResult>(result);
            Assert.Equal(calculatePriceResult, ((JsonResult)result).Value);
        }
        public void AssignPromotionsToShoppingCartItemsTest_promotionNotFoundForItem_noPromotionAssigned() {
            string[] pricings = new string[] { "Apple, 1.00" };
            string[] promotions = new string[] { "Bananas, QtyPromoPrice, [email protected]" };

            Item item = new Item("Apple");
            ShoppingCart cart = new ShoppingCart();
            cart.AddItem(item);
            LineItem lineItem = cart.GetLineItemForItem(item);

            Assert.IsNull(lineItem.Promotion);

            PricingController pricingController = new PricingController(pricings, promotions);
            pricingController.AssignPromotionsToShoppingCartItems(cart);

            Assert.IsNull(lineItem.Promotion);            
        }
        public void AssignPricingToShoppingCartItemsTest_pricingAssignedToLineItem() {
            string[] pricings = new string[] { "Apple, 1.00" };
            string[] promotions = new string[0];
            
            Item item = new Item("Apple");
            ShoppingCart cart = new ShoppingCart();
            cart.AddItem(item);
            LineItem lineItem = cart.GetLineItemForItem(item);

            Assert.AreEqual(0, lineItem.PricePerUnit);

            PricingController pricingController = new PricingController(pricings, promotions);
            pricingController.AssignPricingToShoppingCartItems(cart);

            Assert.AreEqual(1.00, lineItem.PricePerUnit);
        }