{"id":2127,"date":"2019-05-01T09:52:41","date_gmt":"2019-05-01T08:52:41","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=2127"},"modified":"2022-07-25T08:33:26","modified_gmt":"2022-07-25T07:33:26","slug":"c-fake-dbasyncenumerable-for-testing-entityframework-snippets","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/c-fake-dbasyncenumerable-for-testing-entityframework-snippets\/","title":{"rendered":"C# Fake DbAsyncEnumerable (For Testing EntityFramework snippets)"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Data.Entity.Infrastructure;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Domain.UnitTests\n{\n    public class DbAsyncEnumerator&lt;T> : IDbAsyncEnumerator&lt;T>\n    {\n        private readonly IEnumerator&lt;T> _enumerator;\n        public DbAsyncEnumerator(IEnumerator&lt;T> enumerator)\n        {\n            _enumerator = enumerator;\n        }\n        public T Current => _enumerator.Current;\n        object IDbAsyncEnumerator.Current => _enumerator.Current;\n        public void Dispose()\n        {\n            _enumerator.Dispose();\n        }\n        public Task&lt;bool> MoveNextAsync(CancellationToken cancellationToken)\n        {\n            return Task.FromResult(_enumerator.MoveNext());\n        }\n    }\n\n    public class DbAsyncEnumerable&lt;T> : IDbAsyncEnumerable&lt;T>, IQueryable&lt;T>\n    {\n        private readonly IQueryable&lt;T> _queryable;\n        private readonly IDbAsyncEnumerator&lt;T> _dbEnumerator;\n        public DbAsyncEnumerable(IQueryable&lt;T> enumerable)\n        {\n            _queryable = enumerable;\n            _dbEnumerator = new DbAsyncEnumerator&lt;T>(enumerable.GetEnumerator());\n        }\n        public Expression Expression => _queryable.Expression;\n        public Type ElementType => _queryable.ElementType;\n        public IQueryProvider Provider => _queryable.Provider;\n        public IDbAsyncEnumerator&lt;T> GetAsyncEnumerator()\n        {\n            return _dbEnumerator;\n        }\n        public IEnumerator&lt;T> GetEnumerator()\n        {\n            return _queryable.GetEnumerator();\n        }\n        IDbAsyncEnumerator IDbAsyncEnumerable.GetAsyncEnumerator()\n        {\n            return _dbEnumerator;\n        }\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return _queryable.GetEnumerator();\n        }\n    }\n\n\/\/ Usage: await repository.AsQueryable().Returns(new DbAsyncEnumerable&lt;User>(userList.AsQueryable())).ToListAsync();\n}<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6,4,1],"tags":[],"class_list":["post-2127","post","type-post","status-publish","format-standard","hentry","category-dotnet","category-programming","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=2127"}],"version-history":[{"count":4,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2127\/revisions"}],"predecessor-version":[{"id":2175,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2127\/revisions\/2175"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=2127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=2127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=2127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}