コード例 #1
0
        public void QueryCritter_SelectIntThenSum()
        {
            var expected = CritterEntities.Select(x => x.Name.Length).Sum();
            var actual   = Client.Query <ICritter>().Select(x => x.Name.Length).Sum();

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #2
0
        public void QueryCritter_SelectToStringObjectDictionary_ReturnsCorrectValues()
        {
            Func <Critter, Dictionary <string, object> > selector = x =>
                                                                    new Dictionary <string, object>
            {
                { "critterId", x.Id },
                { "critterName", x.Name }
            };
            var expected = CritterEntities
                           .Select(
                selector)
                           .First();
            Expression <Func <ICritter, Dictionary <string, object> > > expression = x =>
                                                                                     new Dictionary <string, object>
            {
                { "critterId", x.Id },
                { "critterName", x.Name }
            };
            var actual =
                Client.Query <ICritter>()
                .Select(
                    expression)
                .First();

            AssertSequenceEqualsAndCountIsGreaterThanZero(actual, expected);
        }
コード例 #3
0
ファイル: PostTests.cs プロジェクト: anthrax3/Pomona
        public void PostCritterWithSubscription_RunsOnDeserializationHook()
        {
            const string critterName = "Postal critter";

            var critter = (ICritter)Client.Post <ICritter>(
                x =>
            {
                x.Subscriptions.Add(new SubscriptionForm
                {
                    Model = new WeaponModelForm {
                        Name = "blah"
                    },
                    Sku      = "haha",
                    StartsOn = DateTime.UtcNow
                });
                x.Name = critterName;
            });

            Assert.That(critter.Name, Is.EqualTo(critterName));
            Assert.That(critter.Subscriptions.Count, Is.EqualTo(1));

            var critterEntity = CritterEntities.First(x => x.Id == critter.Id);

            Assert.That(critterEntity.Subscriptions[0].Critter, Is.EqualTo(critterEntity));
        }
コード例 #4
0
        public void QueryCritter_SelectDoubleThenSum()
        {
            var expected = CritterEntities.Select(x => (double)x.Id).Sum();
            var actual   = Client.Query <ICritter>().Select(x => (double)x.Id).Sum();

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #5
0
        public void QueryCritter_GetSumOfNullableInt()
        {
            var expected = CritterEntities.Sum(x => (int?)x.Id);
            var actual   = Client.Query <ICritter>().Sum(x => (int?)x.Id);

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #6
0
        public void QueryCritter_GroupByThenSelectAnonymousClass_ReturnsCorrectValues()
        {
            Repository.CreateRandomData();
            // Just take some random critter
            // Search by its name
            var expected =
                CritterEntities
                .Where(x => x.Id % 3 > 0)
                .GroupBy(x => x.Farm.Id)
                .Select(
                    x => new
            {
                x.Key,
                Count     = x.Count(),
                WeaponSum = x.Sum(y => y.Weapons.Sum(z => z.Strength))
            })
                .Take(1)
                .ToList();

            var actual =
                Client.Query <ICritter>()
                .Where(x => x.Id % 3 > 0)
                .GroupBy(x => x.Farm.Id)
                .Select(
                    x => new
            {
                x.Key,
                Count     = x.Count(),
                WeaponSum = x.Sum(y => y.Weapons.Sum(z => z.Strength))
            })
                .Take(1)
                .ToList();

            AssertSequenceEqualsAndCountIsGreaterThanZero(actual, expected);
        }
コード例 #7
0
        public void QueryCritter_GetSumOfDecimal()
        {
            var expected = CritterEntities.Sum(x => (decimal)x.Id);
            var actual   = Client.Query <ICritter>().Sum(x => (decimal)x.Id);

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #8
0
        public void QueryCritter_GetSumOfInt()
        {
            var expected = CritterEntities.Sum(x => x.Name.Length);
            var actual   = Client.Query <ICritter>().Sum(x => x.Name.Length);

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #9
0
        public async Task FutureMax_ReturnsCorrectResult()
        {
            var expected = CritterEntities.Max(x => x.Id);
            var result   = await Client.Critters.Query().Future(x => x.Max(y => y.Id));

            Assert.That(result, Is.EqualTo(expected));
        }
コード例 #10
0
ファイル: QueryCritterTests.cs プロジェクト: anthrax3/Pomona
        public void QueryCritter_IdInList_ReturnsCorrectCritters()
        {
            Repository.CreateRandomData(critterCount: 10);
            var ids = CritterEntities.Skip(4).Select(x => x.Id).Take(5).ToList();

            TestQuery <ICritter, Critter>(x => ids.Contains(x.Id), x => ids.Contains(x.Id), expectedResultCount: 5);
        }
コード例 #11
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void GetResourceById_UsingClientRepository_ReturnsResource()
        {
            var critterEntity   = CritterEntities.First();
            var critterResource = Client.Critters.Get(critterEntity.Id);

            Assert.That(critterResource, Is.Not.Null);
        }
コード例 #12
0
ファイル: QueryCritterTests.cs プロジェクト: anthrax3/Pomona
        public void QueryCritter_WithNameEquals_ReturnsCorrectResult()
        {
            var nameOfFirstCritter = CritterEntities.First().Name;
            var fetchedCritters    = Client.Query <ICritter>(x => x.Name == nameOfFirstCritter);

            Assert.That(fetchedCritters.Any(x => x.Name == nameOfFirstCritter));
        }
コード例 #13
0
        public void Query_ExtendedResources_WrapsResourcesCorrectly_WhenUsingToArray()
        {
            var critterEntities = CritterEntities.Take(10);
            var critters        = Client.Critters.Query <IDecoratedCritter>().Take(10).ToArray();

            Assert.That(critterEntities.Select(x => x.Id), Is.EquivalentTo(critters.Select(x => x.Id)));
        }
コード例 #14
0
        public void QueryCritter_GroupByThenSelectAnonymousClassThenOrderBy_ReturnsCorrectValues()
        {
            // Just take some random critter
            // Search by its name
            var expected =
                CritterEntities
                .GroupBy(x => x.Name.Substring(0, 1))
                .Select(
                    x => new
            {
                x.Key,
                Count     = x.Count(),
                WeaponSum = x.Sum(y => y.Weapons.Sum(z => z.Strength))
            })
                .OrderByDescending(x => x.Count)
                .Take(10)
                .ToList();

            var actual =
                Client.Query <ICritter>()
                .GroupBy(x => x.Name.Substring(0, 1))
                .Select(
                    x => new
            {
                x.Key,
                Count     = x.Count(),
                WeaponSum = x.Sum(y => y.Weapons.Sum(z => z.Strength))
            })
                .OrderByDescending(x => x.Count)
                .Take(10)
                .ToList();

            AssertSequenceEqualsAndCountIsGreaterThanZero(actual, expected);
        }
コード例 #15
0
        public async Task ToQueryResultAsync_ReturnsCorrectResult()
        {
            var firstCritterId = CritterEntities.First().Id;
            var result         = await Client.Critters.Query().Where(x => x.Id == firstCritterId).ToQueryResultAsync();

            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result[0].Id, Is.EqualTo(firstCritterId));
        }
コード例 #16
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void SimpleQueryTest()
        {
            var musicalCritterId = CritterEntities.OfType <MusicalCritter>().First().Id;

            var musicalCritter = ResourceFetcherExtensions.Get <ICritter>(Client, BaseUri + "critters/" + musicalCritterId);

            Assert.That(musicalCritter, Is.AssignableTo <IMusicalCritter>());
        }
コード例 #17
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void Query_SelectObjectArray_IsSuccessful()
        {
            var results           = Client.Critters.Query().Select(x => new object[] { x.Id, x.Guid, x.Hat }).ToList();
            var comparableResults = results.Select(x => new { Id = (int)x[0], Guid = (Guid)x[1], HatId = ((IHat)x[2]).Id }).ToList();
            var expected          = CritterEntities.Select(x => new { x.Id, x.Guid, HatId = x.Hat.Id });

            CollectionAssert.AreEqual(expected, comparableResults);
        }
コード例 #18
0
ファイル: CritterTests.cs プロジェクト: anthrax3/Pomona
        public void GetMusicalCritter()
        {
            var musicalCritterId = CritterEntities.OfType <MusicalCritter>().First().Id;

            var musicalCritter = Client.Get <ICritter>(BaseUri + "critters/" + musicalCritterId);

            Assert.That(musicalCritter, Is.AssignableTo <IMusicalCritter>());
        }
コード例 #19
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void Select_WithClientServerSplit_CallingNewOfTypeOnlyAvailableOnClient_IsSuccessful()
        {
            var expected =
                CritterEntities.Select(x => new ClientSideClass(x.Id, x.Name)).ToList();
            var actual =
                Client.Critters.Select(x => new ClientSideClass(x.Id, x.Name)).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }
コード例 #20
0
ファイル: QueryCritterTests.cs プロジェクト: anthrax3/Pomona
        public void QueryCritter_CastToMusicalCritterWithEqualsOperator_ReturnsCorrectMusicalCritter()
        {
            var firstMusicalCritter =
                CritterEntities.OfType <MusicalCritter>().First();
            var bandName = firstMusicalCritter.BandName;

            TestQuery <ICritter, Critter>(x => x is IMusicalCritter && ((IMusicalCritter)x).BandName == bandName,
                                          x => x is MusicalCritter && ((MusicalCritter)x).BandName == bandName);
        }
コード例 #21
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void Select_WithClientServerSplit_CallingMethodOnlyAvailableToClient_IsSuccessful_UsingFirstProjection()
        {
            var expected =
                CritterEntities.Select(x => new ClientSideClass(x.Id, x.Name + "|" + SomeCrazyMethod(x.Name))).First();
            var actual =
                Client.Critters.Select(x => new ClientSideClass(x.Id, x.Name + "|" + SomeCrazyMethod(x.Name))).First();

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #22
0
        public void QueryCritter_AnyWithExistingName_ReturnsTrue()
        {
            // Just take some random critter
            var critter            = CritterEntities.First();
            var hasCritterWithGuid =
                Client.Critters.Query().Any(x => x.Name == critter.Name);

            Assert.That(hasCritterWithGuid, Is.True);
        }
コード例 #23
0
        public void QueryCritter_WhereThenSelectSingleProperty_ReturnsCorrectValues()
        {
            // Just take some random critter
            // Search by its name
            var expected = CritterEntities.OrderBy(x => x.Name).Select(x => x.Name).Take(10000).ToList();
            var actual   =
                Client.Query <ICritter>().OrderBy(x => x.Name).Select(x => x.Name).Take(10000).ToList().ToList();

            Assert.That(actual, Is.EqualTo(expected));
        }
コード例 #24
0
        public void QueryCritter_WhereSingle_ReturnsCorrectCritter()
        {
            // Just take some random critter
            var critter = CritterEntities.Skip(1).Take(1).First();
            // Search by its name
            var critterResource =
                Client.Query <ICritter>().Single(x => x.Name == critter.Name && x.Guid == critter.Guid);

            Assert.That(critterResource.Id, Is.EqualTo(critter.Id));
        }
コード例 #25
0
ファイル: CritterTests.cs プロジェクト: anthrax3/Pomona
        public void UsesCustomSetterForAbsoluteFileUrl_OnPatch()
        {
            var critter = Client.Critters.First();

            critter = Client.Critters.Patch(critter, x => x.AbsoluteImageUrl = "http://test:80/new-image.png");
            Assert.That(critter.AbsoluteImageUrl, Is.EqualTo("http://test:80/new-image.png"));
            var critterEntity = CritterEntities.First(x => x.Id == critter.Id);

            Assert.That(critterEntity.RelativeImageUrl, Is.EqualTo("/new-image.png"));
        }
コード例 #26
0
        public void QuerySubclassedMusicalCritter_WhereFirst_ReturnsCorrectMusicalCritter()
        {
            // Just take some random critter
            var critter = CritterEntities.OfType <MusicalCritter>().Take(1).First();
            // Search by its name
            var critterResource =
                Client.Query <IMusicalCritter>().First(
                    x => x.Name == critter.Name && x.Guid == critter.Guid && x.BandName == critter.BandName);

            Assert.That(critterResource.Id, Is.EqualTo(critter.Id));
        }
コード例 #27
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void QueryResourceWithNonExpandedEnumerable_ReturnsLazyItems()
        {
            Repository.CreateRandomData(critterCount: 20);
            var farms = Client.Farms.Query().ToList();

            Assert.That(farms.All(x => x.MusicalCritters is LazyListProxy <IMusicalCritter>));
            var musicalCritters = farms.SelectMany(x => x.MusicalCritters).ToList();

            Assert.That(musicalCritters.Select(x => x.Id).OrderBy(x => x),
                        Is.EquivalentTo(CritterEntities.OfType <MusicalCritter>().Select(x => x.Id)));
        }
コード例 #28
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void Select_WithClientServerSplit_UsingLocallyExecutedConcatMethod_IsSuccessful()
        {
            var expected =
                CritterEntities.Select(
                    x => new ClientSideClass(x.Id, x.Name.ToUpper() + "|" + SomeCrazyMethod(x.Name.ToLower()))).ToList();
            var actual =
                Client.Critters.Select(
                    x => new ClientSideClass(x.Id, x.Name.ToUpper() + "|" + SomeCrazyMethod(x.Name.ToLower()))).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }
コード例 #29
0
ファイル: CritterTests.cs プロジェクト: anthrax3/Pomona
        public void UsesCustomSetterForAbsoluteFileUrl_OnPost()
        {
            var critter = Client.Critters.Post(new CritterForm()
            {
                AbsoluteImageUrl = "http://test:80/holala.png"
            });

            Assert.That(critter.AbsoluteImageUrl, Is.EqualTo("http://test:80/holala.png"));
            var critterEntity = CritterEntities.First(x => x.Id == critter.Id);

            Assert.That(critterEntity.RelativeImageUrl, Is.EqualTo("/holala.png"));
        }
コード例 #30
0
ファイル: QueryTests.cs プロジェクト: anthrax3/Pomona
        public void QueryResourceWithShallowExpandedEnumerable_ReturnsExpandedListOfReferences()
        {
            Repository.CreateRandomData(critterCount: 20);
            var farms = Client.Farms.Query().ExpandShallow(x => x.MusicalCritters).ToList();

            Assert.That(farms.All(x => x.MusicalCritters.IsLoaded()), Is.True);
            var musicalCritters = farms.SelectMany(x => x.MusicalCritters).ToList();

            Assert.That(farms.SelectMany(x => x.MusicalCritters).All(x => x.IsLoaded()), Is.False);
            Assert.That(musicalCritters.Select(x => x.Id).OrderBy(x => x),
                        Is.EquivalentTo(CritterEntities.OfType <MusicalCritter>().Select(x => x.Id)));
        }