public void GivenFullSizeCalzoneWithFetaCheese_WhenAskingForDescription_ThenItShouldReturnCorrectValue()
        {
            // arrange
            IProduct calzone = new Calzone(new FullCalzoneSize(), new IIngredient[] { new FetaCheese(new Calzone(new FullCalzoneSize())) });

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Full Calzone with Feta Cheese");
        }
        public void GivenHalfSizeCalzone_WhenAskingForDescription_ThenItShouldReturnCorrectValue()
        {
            // arrange
            IProduct calzone = new Calzone(new HalfCalzoneSize());

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Half-Size Calzone");
        }
        public void GivenDefaultCalzone_WhenAskingForDescription_ThenItShouldReturnCorrectValue()
        {
            // arrange
            IProduct calzone = new Calzone();

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Full Calzone");
        }
        public void GivenFullSizeCalzoneWithMushroomsBaconAndOlives_WhenAskingForDescription_ThenItShouldReturnCorrectValue()
        {
            // arrange
            FullCalzoneSize size      = new FullCalzoneSize();
            Calzone         basePizza = new Calzone(size);
            IProduct        calzone   = new Calzone(size, new IIngredient[] { new Mushrooms(basePizza), new Bacon(basePizza), new Olives(basePizza) });

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Full Calzone with Mushrooms, Olives and Bacon");
        }
        public void GivenHalfSizeCalzoneWithMushroomsBaconOlivesAndHam_WhenAskingForDescription_ThenItShouldReturnCorrectValue()
        {
            // arrange
            HalfCalzoneSize size        = new HalfCalzoneSize();
            Calzone         baseCalzone = new Calzone(size);
            IProduct        calzone     = new Calzone(size, new IIngredient[] { new Mushrooms(baseCalzone), new Bacon(baseCalzone), new Olives(baseCalzone), new Ham(baseCalzone) });

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Half-Size Calzone with Mushrooms, Olives, Bacon and Ham");
        }
        public void GivenFullSizeCalzoneWithStandardMetaAndPremiumIngredientsInWrongOrder_WhenAskingForDescription_ThenItShouldReturnProperlyOrderedDescription()
        {
            // arrange
            IProduct calzone = new Calzone(new FullCalzoneSize(), new IIngredient[]
            {
                new FetaCheese(new Calzone(new FullCalzoneSize())),
                new Pepperoni(new Calzone(new FullCalzoneSize())),
                new Mozzarella(new Calzone(new FullCalzoneSize())),
            });

            // act
            string actual = calzone.Description();

            // assert
            actual.Should().Be("Full Calzone with Mozzarella, Pepperoni and Feta Cheese");
        }