public void OrderDrink_ReturnsTeaWithoutMilkAndSugar_WhenHasMilkAndHasSugarAreFalse()
        {
            //Arrange
            DrinkAddOn addOn = new DrinkAddOn();

            //Act
            IDrink drink = DrinkFactory.OrderDrink(DrinkType.Tea, addOn);

            //Assert
            Assert.IsTrue(drink is Tea);
            Assert.AreEqual("We are preparing the following drink for you: Hot tea without milk without sugar", drink.Description);
            Assert.AreEqual(1, drink.GetCost());
        }
        public void OrderDrink_ReturnsIceTeaWithoutSugar_WhenHasSugarIsFalse()
        {
            //Arrange
            DrinkAddOn addOn = new DrinkAddOn();

            //Act
            IDrink drink = DrinkFactory.OrderDrink(DrinkType.IceTea, addOn);

            //Assert
            Assert.IsTrue(drink is IceTea);
            Assert.AreEqual("We are preparing the following drink for you: Ice tea without sugar", drink.Description);
            Assert.AreEqual(1.5, drink.GetCost());
        }
        public void OrderDrink_ReturnsExpressoWithSugar_WhenHasSugarIsTrue()
        {
            //Arrange
            DrinkAddOn addOn = new DrinkAddOn();

            addOn.HasSugar = true;
            //Act
            IDrink drink = DrinkFactory.OrderDrink(DrinkType.Expresso, addOn);

            //Assert
            Assert.IsTrue(drink is SugarDecorator);
            Assert.AreEqual("We are preparing the following drink for you: Expresso without milk with sugar", drink.Description);
            Assert.AreEqual(2.3, drink.GetCost());
        }
        public void OrderDrink_ReturnsTeaWithMilk_WhenHasMilkIsTrue()
        {
            //Arrange
            DrinkAddOn addOn = new DrinkAddOn();

            addOn.HasMilk = true;
            //Act
            IDrink drink = DrinkFactory.OrderDrink(DrinkType.Tea, addOn);

            //Assert
            Assert.IsTrue(drink is MilkDecorator);
            Assert.AreEqual("We are preparing the following drink for you: Hot tea with milk without sugar", drink.Description);
            Assert.AreEqual(1.5, drink.GetCost());
        }
        public void OrderDrink_ReturnsExpressoWithMilkAndSugarWithChocolate_WhenHasMilkAndHasSugarAndHasChocolateAreTrue()
        {
            //Arrange
            DrinkAddOn addOn = new DrinkAddOn();

            addOn.HasSugar     = true;
            addOn.HasMilk      = true;
            addOn.HasChocolate = true;
            //Act
            IDrink drink = DrinkFactory.OrderDrink(DrinkType.Expresso, addOn);

            //Assert
            Assert.IsTrue(drink is ChocolateDecorator);
            Assert.AreEqual("We are preparing the following drink for you: Expresso with milk with sugar with chocolate", drink.Description);
            Assert.AreEqual(3.3, drink.GetCost());
        }