private void VerifyMethod(Action <InternalDbQuery <string> > methodInvoke, Expression <Action <IInternalQuery <string> > > mockMethodInvoke)
        {
            Assert.NotNull(methodInvoke);
            Assert.NotNull(mockMethodInvoke);

            var internalQueryMock = new Mock <IInternalQuery <string> >();

            internalQueryMock.Setup(m => m.GetEnumerator()).Returns(new Mock <IEnumerator <string> >().Object);
            internalQueryMock.Setup(m => m.AsNoTracking()).Returns(internalQueryMock.Object);
            internalQueryMock.Setup(m => m.Include(It.IsAny <string>())).Returns(internalQueryMock.Object);
            var dbQuery = new InternalDbQuery <string>(internalQueryMock.Object);

            methodInvoke(dbQuery);

            internalQueryMock.Verify(mockMethodInvoke, Times.Once());
        }
        public void NonGeneric_methods_delegate_to_underlying_InternalQuery_correctly()
        {
            var internalQueryMock           = new Mock <IInternalQuery <string> >();
            var nonGenericInternalQueryMock = internalQueryMock.As <IInternalQuery>();

            nonGenericInternalQueryMock.Setup(m => m.GetEnumerator()).Returns(new Mock <IEnumerator>().Object);
            var dbQuery = new InternalDbQuery <string>(internalQueryMock.Object);

#if !NET40
            ((IDbAsyncEnumerable)dbQuery).GetAsyncEnumerator();

            nonGenericInternalQueryMock.Verify(m => m.GetAsyncEnumerator(), Times.Once());
#endif

            ((IEnumerable)dbQuery).GetEnumerator();

            nonGenericInternalQueryMock.Verify(m => m.GetEnumerator(), Times.Once());
        }
        private void VerifyGetter <TProperty, TInternalProperty>(
            Func <InternalDbQuery <string>, TProperty> getterFunc,
            Expression <Func <IInternalQuery <string>, TInternalProperty> > mockGetterFunc)
        {
            Assert.NotNull(getterFunc);
            Assert.NotNull(mockGetterFunc);

            var internalQueryMock = new Mock <IInternalQuery <string> >();

            internalQueryMock.Setup(m => m.ElementType).Returns(typeof(string));
            internalQueryMock.Setup(m => m.Expression).Returns(Expression.Constant(new object()));
            internalQueryMock.Setup(m => m.InternalContext).Returns(new Mock <InternalContextForMock <DbContext> >().Object);
            internalQueryMock.Setup(m => m.ObjectQueryProvider).Returns(
                new ObjectQueryProvider(MockHelper.CreateMockObjectContext <string>()));
            var dbQuery = new InternalDbQuery <string>(internalQueryMock.Object);

            getterFunc(dbQuery);
            internalQueryMock.VerifyGet(mockGetterFunc, Times.Once());
        }