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(); }
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)); }
public ReportCommand(IDrinkOrder order, DateTime orderTime) { Order = order; OrderTime = orderTime; }