public void Can_create_instance()
        {
            var donutRepository = A.Fake <IRepository <Donut> >();
            var controller      = new DonutsController(donutRepository);

            controller.ShouldNotBeNull();
        }
        public async Task GetAll_should_return_all_donuts_in_db_as_list_of_donnutDtos()
        {
            var donutRepository = A.Fake <IRepository <Donut> >();

            A.CallTo(() => donutRepository.GetAll())
            .Returns(new[]
            {
                new Donut
                {
                    Id       = 1,
                    Name     = "Donut1",
                    Toppings = new List <Topping>
                    {
                        new Topping {
                            Id = 1, Name = "SchokoSauce", Color = "Rosa"
                        },
                        new Topping {
                            Id = 2, Name = "SchokoSauce", Color = "Grün"
                        },
                        new Topping {
                            Id = 3, Name = "SchokoSauce", Color = "Blau"
                        },
                    }
                },
                new Donut
                {
                    Id       = 2,
                    Name     = "Donut2",
                    Toppings = new List <Topping>
                    {
                        new Topping {
                            Id = 4, Name = "Zuckerglasur", Color = "Pink"
                        },
                        new Topping {
                            Id = 5, Name = "Zuckerglasur", Color = "Gelb"
                        },
                        new Topping {
                            Id = 6, Name = "Zuckerglasur", Color = "Schwarz"
                        },
                    }
                },
                new Donut
                {
                    Id       = 3,
                    Name     = "Donut3",
                    Toppings = new List <Topping>
                    {
                        new Topping {
                            Id = 7, Name = "Streusel", Color = "Orange"
                        },
                        new Topping {
                            Id = 8, Name = "Streusel", Color = "Weiß"
                        },
                        new Topping {
                            Id = 9, Name = "Streusel", Color = "Braun"
                        },
                    }
                }
            });

            var controller = new DonutsController(donutRepository)
            {
                Request = new HttpRequestMessage()
            };

            controller.Request.Properties["MS_HttpConfiguration"] = new HttpConfiguration();

            var response = await controller.GetAll();

            var result = await response.ExecuteAsync(CancellationToken.None);

            result.StatusCode.ShouldBe(HttpStatusCode.OK);
            var donuts = await result.Content.ReadAsAsync <IEnumerable <DonutDto> >();

            donuts.Count().ShouldBe(3);
            donuts.ShouldContain(d => d.Id == 1 && d.Name == "Donut1");
            donuts.ShouldContain(d => d.Id == 2 && d.Name == "Donut2");
            donuts.ShouldContain(d => d.Id == 3 && d.Name == "Donut3");

            var toppings = donuts.SelectMany(d => d.Toppings);

            toppings.Select(t => t.Id).ShouldBeSubsetOf(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
        }