public void DoNotContaminateQueryWithOptions()
        {
            var session = Substitute.For <ISessionImplementor>();

            session.Factory.Settings.Returns(new Settings());

            var query = Substitute.For <IQuery>();

            query.List().Returns(new List <Order>());

            session.CreateQuery(Arg.Any <IQueryExpression>()).Returns(query);

            var queryable = new NhQueryable <Order>(session);

            var o1 = queryable
                     .WithOptions(
                x => x
                .SetCacheable(true)
                .SetCacheMode(CacheMode.Normal)
                .SetCacheRegion("testregion")
                .SetTimeout(10)
                ).ToList();

            var o2 = queryable.ToList();

            query.Received(1).SetCacheable(true);
            query.Received(1).SetCacheMode(CacheMode.Normal);
            query.Received(1).SetCacheRegion("testregion");
            query.Received(1).SetTimeout(10);

            // Prevent garbage collection of session substitute before end of test, since the Linq query provider
            // only has a weak reference on it.
            Assert.That(session, Is.Not.Null);
        }
        public void DoNotContaminateQueryWithOptions()
        {
            var session = Substitute.For <ISessionImplementor>();

            session.Factory.Settings.Returns(new Settings());

            var query = Substitute.For <IQuery>();

            query.List().Returns(new List <Order>());

            session.CreateQuery(Arg.Any <IQueryExpression>()).Returns(query);

            var queryable = new NhQueryable <Order>(session);

            var o1 = queryable
                     .WithOptions(
                x => x
                .SetCacheable(true)
                .SetCacheMode(CacheMode.Normal)
                .SetCacheRegion("testregion")
                .SetTimeout(10)
                ).ToList();

            var o2 = queryable.ToList();

            query.Received(1).SetCacheable(true);
            query.Received(1).SetCacheMode(CacheMode.Normal);
            query.Received(1).SetCacheRegion("testregion");
            query.Received(1).SetTimeout(10);
        }