Skip to content

QueryInterceptorProvider

Compare
Choose a tag to compare
@dlebee dlebee released this 13 Dec 00:04
· 11 commits to master since this release
a8468e3

You can now return interceptors using a provider.

public class QueryProviderTests
    {
        private class FakeInterceptor : IQueryInterceptor
        {

        }

        private class QueryInterceptorProvider : IQueryInterceptorProvider
        {
            public IEnumerable<IQueryInterceptor> GetInterceptors<TSource, TResult>(IQueryCriteria queryCriteria, IQueryable<TSource> queryable)
            {
                yield return new FakeInterceptor();
                yield return new FakeInterceptor();
            }
        }

        [Fact]
        public void Simple()
        {
            MockContextFactory.SeedAndTestContextFor("QueryProviderTests_Simple", TestSeeders.SimpleSeedScenario, ctx =>
            {
                // criteria
                var criteria = new QueryCriteria();
                var queryHandler = new QueryHandler(new List<IQueryInterceptorProvider>{
                    new QueryInterceptorProvider()
                });
                queryHandler.AddInterceptor(new FakeInterceptor());
                var interceptors = queryHandler.ResolveInterceptors<Order, Order>(criteria, ctx.Orders);
                Assert.Equal(1, interceptors.Count);
                Assert.True(interceptors[0].GetType() == typeof(FakeInterceptor));
            });
        }
    }