Exemplo n.º 1
0
        public void Virtual_List_View_Test()
        {
            int skip = 0;
            int take = 1000;

            var results = _context.Query <IntegrationUserTest>(SearchScope.Subtree, IntegrationUserTest.NamingContext2)
                          .Where(x => Filter.StartsWith(x, "givenName", "T", true))
                          .OrderByDescending(x => x.Cn)
                          .Skip(skip)
                          .Take(1000)
                          .ToList();

            results.Should().Not.Be.Empty().And.Have.Count.EqualTo(1000);
            results.As <IVirtualListView <IntegrationUserTest> >().Should().Not.Be.Null();
            results.As <IVirtualListView <IntegrationUserTest> >().ContextId
            .Should().Not.Be.Null();
            results.As <IVirtualListView <IntegrationUserTest> >().TargetPosition
            .Should().Be.GreaterThanOrEqualTo(0);

            string[] attribs = { "cn", "sn", "givenName" };

            SearchRequest searchRequest = new SearchRequest
                                              (IntegrationUserTest.NamingContext2,
                                              "(givenName=T*)",
                                              SearchScope.Subtree,
                                              attribs);

            SortRequestControl sortRequest = new SortRequestControl("cn", true);

            searchRequest.Controls.Add(sortRequest);

            VlvRequestControl vlvRequest =
                new VlvRequestControl(0, take - 1, skip + 1);

            // add the vlv request to the searchRequest object
            searchRequest.Controls.Add(vlvRequest);

            SearchResponse searchResponse =
                (SearchResponse)_context.SendRequest(searchRequest);

            searchResponse.Should().Not.Be.Null();
            searchResponse.Entries.Count.Should().Be.GreaterThan(0);
            results.As <IVirtualListView <IntegrationUserTest> >().ContentCount
            .Should().Be.EqualTo(searchResponse.Controls[1].As <VlvResponseControl>().ContentCount);


            results.Select(x => x.DistinguishedName)
            .OrderBy(x => x)
            .Should()
            .Have.SameSequenceAs(
                searchResponse.Entries.Cast <SearchResultEntry>().Select(x => x.DistinguishedName).OrderBy(x => x));
        }