Exemple #1
0
        public void Filter_Expression(string expression, params int[] expectedIds)
        {
            var queryable = SampleCollection.ToList().AsQueryable();
            var ft        = new NoData.NoDataBuilder <Dto>("partner/partner", expression, null);
            var result    = ft.Load(queryable).BuildQueryable();

            var ids = result.SelectMany(r => r.GetAllIds()).ToList();

            Assert.Equal(expectedIds.Length, ids.Count);
            foreach (var resultId in ids)
            {
                Assert.Contains(resultId, expectedIds);
            }
        }
        public void Expand_Expression(string expression, params int[] expectedIds)
        {
            var queryable = new List <Dto>(ParentCollection).AsQueryable();

            DefaultSettingsForType <Dto> .SettingsForType.MaxExpandDepth = 100;
            var ft     = new NoData.NoDataBuilder <Dto>(new Parameters(expression), DefaultSettingsForType <Dto> .SettingsForType);
            var result = ft.Load(queryable).BuildQueryable().ToList();

            var resultIds = result.SelectMany(x => x.GetAllIds()).OrderBy(x => x).ToList();
            var expected  = expectedIds.OrderBy(x => x).ToList();

            Assert.NotNull(result);

            resultIds.Should().BeEquivalentTo(expected, "Error with expression: " + expression);
        }
        public void Expand_Ignore_Deserialized_Success()
        {
            var filter     = new NoData.NoDataBuilder <Dto>(null, null, null);
            var serialized = filter.Load(ParentCollection.AsQueryable()).AsJson();

            Assert.NotNull(serialized);
            Assert.Contains("[", serialized);  // returns list
            Assert.Contains("id", serialized); // basic properties
            Assert.Contains("Name", serialized);
            Assert.Contains("region_code", serialized);
            Assert.Contains("1", serialized);
            Assert.Contains("John", serialized);
            Assert.Contains("en", serialized);             // basic values
            Assert.DoesNotContain("children", serialized); // ignored values
            Assert.DoesNotContain("partner", serialized);
            Assert.DoesNotContain("favorite", serialized);
        }
        public void EfCoreSetup_Database_Mapper_NoData_PeopleExpandFavorite()
        {
            var mapper = GetMapper;
            var configProvider = mapper.ConfigurationProvider;
            var context = GetDataContext;

            context.Children.Add(new Child { Id = 10, Region_code = "en-US", Name = "best child ever" });
            context.People.Add(new Person { Id = 1, Region_code = "en-US", Name = "parent", FavoriteId = 10 });
            context.SaveChanges();

            var nodata = new NoData.NoDataBuilder<DtoPerson>("Favorite");
            var source = context.People.AsNoTracking();

            var projected = nodata.Projection(source, configProvider).BuildQueryable();

            var parent = projected.First();
            Assert.NotNull(parent);
            Assert.NotNull(parent.Favorite);
            Assert.Equal(10, parent.Favorite.Id);
        }
Exemple #5
0
        public void Select_Name_OnlyReturnsName_Success()
        {
            var queryable = ParentCollection.ToList().AsQueryable();
            var ft        = new NoData.NoDataBuilder <Dto>(null, null, "Name");
            var result    = ft.Load(queryable).BuildQueryable();

            var resultIds = result.SelectMany(x => x.GetAllIds()).ToList();

            Assert.NotNull(result);
            Assert.Equal(ParentCollection.Count(), resultIds.Count);

            foreach (var dto in result)
            {
                Assert.NotNull(dto);
                Assert.Equal(0, dto.id); // int cannot be null, defaults to 0 when not selected.
                Assert.NotNull(dto.Name);
                Assert.Null(dto.region_code);
                Assert.Null(dto.favorite);
                Assert.Empty(dto.children);
            }
        }
Exemple #6
0
        public void SelectExpand_Deserialized_ExpandChildren_Success()
        {
            var filter     = new NoData.NoDataBuilder <Dto>("children", null, "id");
            var serialized = filter.Load(ParentCollection.AsQueryable()).AsJson();

            Assert.NotNull(serialized);
            Assert.Contains("[", serialized);
            Assert.Contains("]", serialized);

            Assert.Contains("Name", serialized);
            Assert.DoesNotContain(serialized, ("\"John\""));
            Assert.DoesNotContain(serialized, ("\"Jane\""));

            Assert.Contains("id", serialized);
            Assert.Contains("1", serialized);
            Assert.Contains("2", serialized);
            Assert.Contains("10", serialized);

            Assert.Contains("children", serialized);
            Assert.DoesNotContain("partner", serialized);
            Assert.DoesNotContain("favorite", serialized);
            Assert.DoesNotContain("null", serialized);
        }
        public void Expand_Ignore_Deserialized_ExpandPartnerPartner_Success()
        {
            var filter     = new NoData.NoDataBuilder <Dto>("partner/partner", null, null);
            var serialized = filter.Load(ParentCollection.AsQueryable()).AsJson();

            Assert.NotNull(serialized);
            Assert.Contains("[", serialized);  // returns list
            Assert.Contains("id", serialized); // basic properties
            Assert.Contains("Name", serialized);
            Assert.Contains("region_code", serialized);
            Assert.Contains("1", serialized);
            Assert.Contains("2", serialized);
            // should appear three times. Once for the root. Once for the partner, once for the partners partner.
            Assert.Equal(3, serialized.Count(x => x == '1'));
            Assert.Equal(3, serialized.Count(x => x == '2'));
            Assert.Contains("John", serialized);
            Assert.Contains("Jane", serialized);
            Assert.Contains("partner", serialized);
            Assert.Contains("en", serialized);             // basic values
            Assert.DoesNotContain("children", serialized); // ignored values
            Assert.DoesNotContain("favorite", serialized);
            Assert.DoesNotContain("null", serialized);
        }
Exemple #8
0
        public void Select_Blank_AllPropertiesArePresent()
        {
            var queryable = ParentCollection.ToList().AsQueryable();
            var ft        = new NoData.NoDataBuilder <Dto>(null, null, null);
            var result    = ft.Load(queryable).BuildQueryable();

            var resultIds = result.SelectMany(x => x.GetAllIds()).ToList();

            Assert.NotNull(result);
            int[] expectedIds = new[] { 1, 2, 3, 4, 5, 6 };
            Assert.Equal(expectedIds.Length, resultIds.Count);
            foreach (var resultId in resultIds)
            {
                Assert.Contains(resultId, expectedIds);
            }

            foreach (var dto in result)
            {
                Assert.NotNull(dto);
                Assert.NotNull(dto.Name);
                Assert.NotNull(dto.region_code);
                Assert.Null(dto.favorite ?? dto.children?.FirstOrDefault());
            }
        }
Exemple #9
0
        public void Select_id_OnlyReturnsId_Success()
        {
            var queryable = ParentCollection.ToList().AsQueryable();
            var ft        = new NoData.NoDataBuilder <Dto>(null, null, "id");
            var result    = ft.Load(queryable).BuildQueryable();

            var resultIds = result.SelectMany(x => x.GetAllIds()).OrderBy(x => x).ToList();

            Assert.NotNull(result);
            var expectedIds = new[] { 1, 2, 3, 4, 5, 6 }.ToList();

            for (var i = 0; i < expectedIds.Count && i < resultIds.Count; ++i)
            {
                resultIds[i].Should().Be(expectedIds[i]);
            }

            foreach (var dto in result)
            {
                Assert.NotNull(dto);
                Assert.Null(dto.Name);
                Assert.Null(dto.region_code);
                Assert.Null(dto.favorite ?? dto.children?.FirstOrDefault());
            }
        }
Exemple #10
0
        public void FilterExpand_Deserialized_SelectNameIdAndNameOfPartner_SelectInsideExpand_Success()
        {
            var filter     = new NoData.NoDataBuilder <Dto>("partner($filter=Name eq 'Jane')", null, "Name");
            var serialized = filter.Load(ParentCollection.AsQueryable()).AsJson();

            Assert.NotNull(serialized);
            Assert.True(serialized.Contains("["), "is an array");
            Assert.True(serialized.Contains("]"), "is an array");

            Assert.Contains("Name", serialized);
            Assert.True(serialized.Contains("John"), "Name is selected and should appear.");
            Assert.True(serialized.Contains("Jane"), "Name is selected and should appear.");

            Assert.True(serialized.Contains("id"), "id ");
            Assert.False(serialized.Contains("1"), "Selected out the top level id property.");
            Assert.True(serialized.Contains("2"), "expanded on partners, Jane's id should be present.");

            Assert.True(serialized.Contains("region_code"), "Jane has a region_code.");

            Assert.True(serialized.Contains("partner"), "Expanded on partner");
            Assert.False(serialized.Contains("children"), "not expanded on children");
            Assert.False(serialized.Contains("favorite"), "not expanded on favorite");
            Assert.False(serialized.Contains("null"), "Correlates to navigation properties that are serialized, but have a null value when they should not be serialized.");
        }