예제 #1
0
        public void QueryAll_with_pagination()
        {
            var querySerializer = new MSolrQuerySerializer();

            querySerializer.serialize += _ => "id:123456";

            var serviceLocator = new MServiceLocator();

            serviceLocator.getService = MServiceLocator.Table(new Dictionary <System.Type, object> {
                { typeof(ISolrReadOnlyOperations <Entity>), mockSolr },
                { typeof(ISolrQuerySerializer), querySerializer },
            });

            ServiceLocator.SetLocatorProvider(() => serviceLocator);

            mockSolr.queryStringOptions += (s, o) => {
                Assert.Equal("id:123456", s);
                Assert.Equal(5, o.Rows);
                Assert.Equal(3, o.Start);
                Assert.Equal(1, o.OrderBy.Count);
                Assert.Equal("pepe asc", o.OrderBy.First().ToString());
                return(new SolrQueryResults <Entity>());
            };
            mockSolr.queryStringOptions &= x => x.Expect(1);

            using (var session = new SolrSession(sessionFactory.OpenSession())) {
                var entities = session.CreateSolrQuery(new SolrQueryByField("id", "123456"))
                               .SetMaxResults(5)
                               .SetFirstResult(3)
                               .SetSort(Order.Asc("pepe"))
                               .List <Entity>();
            }
        }