コード例 #1
0
        public void EndInitTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            target.EndInit();
        }
コード例 #2
0
        public void Then_the_items_queryable_implements_async_enumerable()
        {
            var sorting        = new SortingHeader("Value", SortOrder.Ascending);
            var paginationInfo = new PaginationInfo(0, 0, false);

            var pagedQueryable = new PagedQueryable <QueryItem>(new QueryAbleWithoutAsync <QueryItem>(), paginationInfo, sorting);

            pagedQueryable.Items.Should().BeAssignableTo <IAsyncEnumerable <QueryItem> >();
        }
コード例 #3
0
        public void RefreshTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            target.Reset();

            Assert.AreEqual(1, target.CurrentPage);
        }
コード例 #4
0
        public void MoveLastTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            target.MoveLast();

            Assert.AreEqual(target.PageCount, target.CurrentPage);
        }
コード例 #5
0
        public void ZeroCountQueryTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = new List <GenericParameterHelper>().AsQueryable().OrderBy(i => i.Data);

            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            target.Reset();

            Assert.AreEqual(0, target.Items.Count);
        }
コード例 #6
0
        public void PagedQueryableConstructorTest()
        {
            IOrderedQueryable <GenericParameterHelper>        query     = GetQuery();
            Expression <Func <GenericParameterHelper, bool> > condition = GetFilter();
            int  pageSize = 12;
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, condition, pageSize, autoLoad);

            Assert.AreEqual(12, target.PageSize);
            Assert.AreEqual(1, target.CurrentPage);
            Assert.AreEqual(12, target.Items.Count);
        }
コード例 #7
0
        public void SortColumnTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            target.BeginInit();
            target.SortColumn = "Data";
            target.EndInit();

            Assert.AreEqual(1, target.CurrentPage);
        }
コード例 #8
0
        public void MoveNextTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            int second = Math.Min(2, target.PageCount);

            target.MoveNext();

            Assert.AreEqual(second, target.CurrentPage);
        }
コード例 #9
0
        public void PagedQueryableConstructorTest2()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, autoLoad);

            int expectedItemsCount = Math.Min(20, GetQuery().Count());

            Assert.AreEqual(20, target.PageSize);
            Assert.AreEqual(1, target.CurrentPage);
            Assert.AreEqual(expectedItemsCount, target.Items.Count);
        }
コード例 #10
0
        protected override void OnActivated()
        {
            _salesListSource = new List <DataDto>();

            #region fill query source (could be from database...)

            int i;
            for (i = 0; i < _rnd.Next(1, 10000); i++)
            {
                _salesListSource.Add(new DataDto
                {
                    CreatedAt           = DateTime.Now,
                    Category            = "North",
                    SalesOrderRowAmount = _rnd.Next(1, 100)
                });
            }
            for (i = 0; i < _rnd.Next(1, 10000); i++)
            {
                _salesListSource.Add(new DataDto
                {
                    CreatedAt           = DateTime.Now,
                    Category            = "East",
                    SalesOrderRowAmount = _rnd.Next(1, 100)
                });
            }
            for (i = 0; i < _rnd.Next(1, 10000); i++)
            {
                _salesListSource.Add(new DataDto
                {
                    CreatedAt           = DateTime.Now,
                    Category            = "West",
                    SalesOrderRowAmount = _rnd.Next(1, 100)
                });
            }
            for (i = 0; i < _rnd.Next(1, 10000); i++)
            {
                _salesListSource.Add(new DataDto
                {
                    CreatedAt           = DateTime.Now,
                    Category            = "South",
                    SalesOrderRowAmount = _rnd.Next(1, 100)
                });
            }

            #endregion

            IOrderedQueryable <DataDto> query = _salesListSource.AsQueryable().OrderBy(o => o.CreatedAt);
            _salesList = new PagedQueryable <DataDto>(query, 10);

            _salesList.Reloaded += SalesListReloaded;

            base.OnActivated();
        }
コード例 #11
0
        protected override void OnOpened()
        {
            IOrderedQueryable <CultureInfoDto> cultureQuery =
                from c in CultureInfo.GetCultures(CultureTypes.NeutralCultures).AsQueryable()
                select new CultureInfoDto(c)
                into m
                orderby m.NativeName
                select m;


            _cultures = new PagedQueryable <CultureInfoDto>(cultureQuery);
        }
コード例 #12
0
        protected override void OnOpened()
        {
            base.OnOpened();

            //check if modes are supported
            IsNewSupported     = ExportedModels.Any(m => m is EntityNewModel <T>);
            IsDeleteSupported  = ExportedModels.Any(m => m is EntityDeleteModel <T>);
            IsDetailsSupported = ExportedModels.Any(m => m is EntityDetailsModel <T>);
            IsNewEnabled       = IsDetailsSupported;

            _riport = new PagedQueryable <T>(ProvideQuery(Context));
        }
コード例 #13
0
        protected override void OnOpened()
        {
            var items = new List <RiportDto>();

            for (int i = 1; i < 100; i++)
            {
                items.Add(new RiportDto {
                    Id = i, Name = "Name" + i, Description = "Description" + i
                });
            }

            //create new riport query with page size of 10
            _riport = new PagedQueryable <RiportDto>(items.AsQueryable().OrderBy(d => d.Id), 10);
        }
コード例 #14
0
        public void ItemsTest()
        {
            IOrderedQueryable <GenericParameterHelper> query = GetQuery();
            bool autoLoad = true;
            int  pageSize = 19;
            var  target   = new PagedQueryable <GenericParameterHelper>(query, pageSize, autoLoad);

            TweakedObservableCollection <GenericParameterHelper> actual;

            actual = target.Items;

            int expected = Math.Min(19, query.Count());

            Assert.AreEqual(expected, actual.Count);
        }
コード例 #15
0
ファイル: QueryTests.cs プロジェクト: ArneD/api
        public When_fetching_query_results_with_limit_zero_pagination()
        {
            const int limitZero = 0;

            _numberOfItems = 15;
            var queryData = new Fixture()
                            .CreateMany <string>(_numberOfItems)
                            .Select((s, i) => new TestQuery.Item {
                Index = i, Value = s
            })
                            .ToImmutableList();

            _fetchResult = new TestQuery(queryData)
                           .Fetch(
                new FilteringHeader <TestQuery.FilterItem>(default),
コード例 #16
0
        private static async Task <string> BuildAtomFeed(
            DateTimeOffset lastUpdate,
            PagedQueryable <MunicipalitySyndicationQueryResult> pagedMunicipalities,
            IOptions <ResponseOptions> responseOptions,
            IConfiguration configuration)
        {
            var sw = new StringWriterWithEncoding(Encoding.UTF8);

            using (var xmlWriter = XmlWriter.Create(sw, new XmlWriterSettings {
                Async = true, Indent = true, Encoding = sw.Encoding
            }))
            {
                var formatter = new AtomFormatter(null, xmlWriter.Settings)
                {
                    UseCDATA = true
                };
                var writer = new AtomFeedWriter(xmlWriter, null, formatter);
                var syndicationConfiguration = configuration.GetSection("Syndication");
                var atomConfiguration        = AtomFeedConfigurationBuilder.CreateFrom(syndicationConfiguration, lastUpdate);

                await writer.WriteDefaultMetadata(atomConfiguration);

                var municipalities = await pagedMunicipalities.Items.ToListAsync();

                var highestPosition = municipalities.Any()
                    ? municipalities.Max(x => x.Position)
                    : (long?)null;

                var nextUri = BuildNextSyncUri(
                    pagedMunicipalities.PaginationInfo.Limit,
                    highestPosition + 1,
                    syndicationConfiguration["NextUri"]);

                if (nextUri != null)
                {
                    await writer.Write(new SyndicationLink(nextUri, GrArAtomLinkTypes.Next));
                }

                foreach (var municipality in municipalities)
                {
                    await writer.WriteMunicipality(responseOptions, formatter, syndicationConfiguration["Category"], municipality);
                }

                xmlWriter.Flush();
            }

            return(sw.ToString());
        }
コード例 #17
0
        protected override void OnOpened()
        {
            IOrderedQueryable <ModelDto> query = from m in ExportedModels.AsQueryable()
                                                 select
                                                 new ModelDto
            {
                ModelTitle = m.ModelTitle, ModelTypeName = m.GetType().Name
            }
            into dto
            orderby dto.ModelTypeName
            select dto;

            _modelList = new PagedQueryable <ModelDto>(query);

            base.OnOpened();
        }
コード例 #18
0
        private static async Task <string> BuildAtomFeed(
            DateTimeOffset lastFeedUpdate,
            PagedQueryable <AddressSyndicationQueryResult> pagedAddresses,
            IOptions <ResponseOptions> responseOptions,
            IConfiguration configuration)
        {
            var sw = new StringWriterWithEncoding(Encoding.UTF8);

            using (var xmlWriter = XmlWriter.Create(sw, new XmlWriterSettings {
                Async = true, Indent = true, Encoding = sw.Encoding
            }))
            {
                var formatter = new AtomFormatter(null, xmlWriter.Settings)
                {
                    UseCDATA = true
                };
                var writer = new AtomFeedWriter(xmlWriter, null, formatter);
                var syndicationConfiguration = configuration.GetSection("Syndication");
                var atomFeedConfig           = AtomFeedConfigurationBuilder.CreateFrom(syndicationConfiguration, lastFeedUpdate);

                await writer.WriteDefaultMetadata(atomFeedConfig);

                var addresses = pagedAddresses.Items.ToList();

                var nextFrom = addresses.Any()
                    ? addresses.Max(x => x.Position) + 1
                    : (long?)null;

                var nextUri = BuildNextSyncUri(pagedAddresses.PaginationInfo.Limit, nextFrom, syndicationConfiguration["NextUri"]);
                if (nextUri != null)
                {
                    await writer.Write(new SyndicationLink(nextUri, "next"));
                }

                foreach (var address in addresses)
                {
                    await writer.WriteAddress(responseOptions, formatter, syndicationConfiguration["Category"], address);
                }

                xmlWriter.Flush();
            }

            return(sw.ToString());
        }
コード例 #19
0
        private static async Task <string> BuildAtomFeed(
            PagedQueryable <PostalInformationSyndicationQueryResult> pagedPostalInfoItems,
            IOptions <ResponseOptions> responseOptions,
            IConfiguration configuration)
        {
            var sw = new StringWriterWithEncoding(Encoding.UTF8);

            using (var xmlWriter = XmlWriter.Create(sw, new XmlWriterSettings {
                Async = true, Indent = true, Encoding = sw.Encoding
            }))
            {
                var formatter = new AtomFormatter(null, xmlWriter.Settings)
                {
                    UseCDATA = true
                };
                var writer = new AtomFeedWriter(xmlWriter, null, formatter);
                var syndicationConfiguration = configuration.GetSection("Syndication");

                await writer.WriteDefaultMetadata(
                    syndicationConfiguration["Id"],
                    syndicationConfiguration["Title"],
                    Assembly.GetEntryAssembly().GetName().Version.ToString(),
                    new Uri(syndicationConfiguration["Self"]),
                    syndicationConfiguration.GetSection("Related").GetChildren().Select(c => c.Value).ToArray());

                var nextUri = BuildVolgendeUri(pagedPostalInfoItems.PaginationInfo, syndicationConfiguration["NextUri"]);
                if (nextUri != null)
                {
                    await writer.Write(new SyndicationLink(nextUri, GrArAtomLinkTypes.Next));
                }

                foreach (var postalInfo in pagedPostalInfoItems.Items)
                {
                    await writer.WritePostalInfo(responseOptions, formatter, syndicationConfiguration["Category"], postalInfo);
                }

                xmlWriter.Flush();
            }

            return(sw.ToString());
        }
コード例 #20
0
 /// <summary>Adds the 'X-Pagination' and 'X-Sorting' response headers</summary>
 public static void AddPagedQueryResultHeaders <T>(this HttpResponse response, PagedQueryable <T> queryResult)
 {
     response.AddPaginationResponse(queryResult.PaginationInfo);
     response.AddSortingResponse(queryResult.Sorting);
 }