public void CanCreateSummary()
        {
            var broker = new QueryBroker<Unicorn, Guid>(Unicorns.All, u => u.Id);

            var summary = broker.Query(new PropertyQuery[] { });

            Assert.Equal(1, summary.Page);
            Assert.NotEmpty(summary.IDs);
            Assert.InRange(summary.IDs.Count(), 1, Unicorns.All.Count());
            Assert.Equal(Unicorns.All.LongCount(), summary.Total);
        }
        public void CanGetByIds_Int()
        {
            var broker = new QueryBroker<Pony, int>(Ponies.All, p => p.Id);

            string ronsId = Ponies.Ron.Id.ToString();
            string darcysId = Ponies.Darcy.Id.ToString();

            var results = broker.GetByIds(new[] { ronsId, darcysId });

            Assert.Contains(Ponies.Ron, results);
            Assert.Contains(Ponies.Darcy, results);
            Assert.DoesNotContain(Ponies.Hank, results);
        }
        public void CanGetByIds_Guid()
        {
            var broker = new QueryBroker<Unicorn, Guid>(Unicorns.All, u => u.Id);

            string fredsId = Unicorns.Fred.Id.ToString();
            string davesId = Unicorns.Dave.Id.ToString();

            var results = broker.GetByIds(new[] { fredsId, davesId });

            Assert.Contains(Unicorns.Fred, results);
            Assert.Contains(Unicorns.Dave, results);
            Assert.DoesNotContain(Unicorns.Daria, results);
        }
        public void CanApplyQueries()
        {
            var broker = new QueryBroker<Unicorn, Guid>(Unicorns.All, u => u.Id);

            var queries = new [] {
                PropertyQuery.Create("name", "da*"),
                PropertyQuery.Create("birthdate", "2016-01-01*"),
            };

            var results = broker.GetItems(queries);

            var shouldFind = Unicorns.GetAtLeast(u => 
                u.Name.StartsWith("da", StringComparison.CurrentCultureIgnoreCase) && 
                u.BirthDate >= new DateTime(2016, 1, 1)
                );

            Assert.True(results.SequenceEqual(shouldFind));
        }