示例#1
0
        public string SendCommand(IDrinkOrder drinkOrder)
        {
            var drinkPrice = drinkOrder.GetPrice();

            if (!IsEnoughPrice(drinkPrice))
            {
                return(SendInsufficientMoneyMessage(drinkPrice));
            }

            return(drinkMakerProtocol.BuildCommand(drinkOrder));
        }
        public void BuildMessage_Should_Build_Message_For_Drink(string drinkCode, string expectedMessage)
        {
            // GIVEN
            IDrinkOrder drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetDrinkCode().Returns(drinkCode);

            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // WHEN
            string message = drinkMakerProtocol.BuildCommand(drinkOrder);

            // THEN
            Check.That(message).IsEqualTo(expectedMessage);
        }
        public void BuildMessage_Should_Build_Empty_Message()
        {
            // GIVEN
            IDrinkOrder drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetDrinkCode().Returns(string.Empty);

            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // WHEN
            string message = drinkMakerProtocol.BuildCommand(drinkOrder);

            // THEN
            Check.That(message).IsEmpty();
        }
示例#4
0
        public string BuildCommand(IDrinkOrder drinkOrder)
        {
            var drinkCode     = drinkOrder.GetDrinkCode();
            var sugarQuantity = drinkOrder.GetSugarQuantity();

            if (string.IsNullOrEmpty(drinkCode))
            {
                return(string.Empty);
            }

            if (sugarQuantity == 0)
            {
                return($"{drinkCode}::");
            }

            return($"{drinkCode}:{sugarQuantity}:1");
        }
        public string SendOrder(IDrinkOrder drinkOrder)
        {
            string code       = drinkOrder.GetDrinkCode();
            double drinkprice = drinkOrder.GetDrinkPrice();

            if (!IsPayed(drinkprice))
            {
                return(MessageInsufficientAmount(drinkprice));
            }
            this.drinkMakerProtocol.SetCode(code);
            this.drinkMakerProtocol.SetSugarQty(drinkOrder.GetDrinkSugarQty());

            if (this.IsThereShortage(code))
            {
                return(this.SendMessage(string.Format("there's a shortage with {0}", code)));
            }

            this.repository.AddCommand(drinkOrder, DateTime.Now);
            return(this.drinkMakerProtocol.MakeOrder());
        }
 public void AddCommand(IDrinkOrder order, DateTime orderTime)
 {
     this.orderData.Add(new ReportCommand(order, orderTime));
 }
示例#7
0
 public ReportCommand(IDrinkOrder order, DateTime orderTime)
 {
     Order     = order;
     OrderTime = orderTime;
 }