public async Task Get_All_People()
        {
            using (var context = GetContextWithData())
            {
                var handler = new GetPeopleQueryHandler(context);
                var result  = await handler.Handle(new GetPeopleQuery(), CancellationToken.None);

                Assert.IsType <GetPeopleModel>(result);
                Assert.Equal(context.Persons.Count(), result.People.Count());
            }
        }
        public async Task Get_People_That_Are_Not_Admins()
        {
            using (var context = GetContextWithData())
            {
                var handler = new GetPeopleQueryHandler(context);
                var result  = await handler.Handle(new GetPeopleQuery { IsAdmin = false }, CancellationToken.None);

                Assert.IsType <GetPeopleModel>(result);
                Assert.Equal(context.Persons.Count(p => !p.IsAdmin.Value), result.People.Count());
                Assert.Equal(context.Persons.First(p => !p.IsAdmin.Value).Name, result.People.First().Name);
            }
        }
        public async Task Get_People_By_Name()
        {
            using (var context = GetContextWithData())
            {
                const string name    = "Victor";
                var          handler = new GetPeopleQueryHandler(context);
                var          result  = await handler.Handle(new GetPeopleQuery { Name = name }, CancellationToken.None);

                Assert.IsType <GetPeopleModel>(result);

                var person = context.Persons.First(p => p.Name == name);
                Assert.Equal(person.Name, result.People.First().Name);
                Assert.Equal(person.Email, result.People.First().Email);
            }
        }
        public async void QueryHandler_returns_result_based_on_query_model()
        {
            // Usually the queryhandler comes in populated with
            // a DbContext, FileSystem, IRepository or else
            // via DI.
            // Here we replicate it via a static list.
            var sut = new GetPeopleQueryHandler(PeopleDatabase);

            var result = await sut.HandleAsync(
                new GetPeopleQuery(amount : 1),
                CancellationToken.None
                );

            result.Should().HaveCount(1);
        }