Skip to content

Commit 5fa219d

Browse files
PanyushkinDPanyushkinD
authored andcommitted
Add more tests
1 parent a799c9b commit 5fa219d

File tree

2 files changed

+101
-1
lines changed

2 files changed

+101
-1
lines changed

EFCore.CommonTools.Tests/Querying/ExtensionExpanderTests.cs

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
using System;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.Linq;
45
using System.Linq.Expressions;
6+
using System.Threading.Tasks;
57
using Microsoft.VisualStudio.TestTools.UnitTesting;
68

79
#if EF_CORE
10+
using Microsoft.EntityFrameworkCore;
11+
812
namespace EntityFrameworkCore.CommonTools.Tests
913
#elif EF_6
1014
using System.Data.Entity;
@@ -238,5 +242,101 @@ public void ShouldExpandNestedExtensions()
238242

239243
Assert.IsNull(query.FirstOrDefault());
240244
}
245+
246+
[TestMethod]
247+
public void ShouldWorkWithInclude()
248+
{
249+
using (var context = CreateSqliteDbContext())
250+
{
251+
var user = new User();
252+
context.Users.Add(user);
253+
254+
var post = new Post { Title = "first", Author = user };
255+
context.Posts.Add(post);
256+
257+
context.SaveChanges();
258+
259+
var query = context.Users.AsExpandable()
260+
.SelectMany(u => u.Posts.FilterIsActive())
261+
.Include(p => p.Author);
262+
263+
var expected = context.Users.AsExpandable()
264+
.SelectMany(u => u.Posts.Where(p => !p.IsDeleted))
265+
.Include(p => p.Author);
266+
267+
Assert.AreEqual(expected.ToString(), query.ToString());
268+
269+
Assert.AreNotSame(expected.Expression, query.Expression);
270+
271+
Assert.That.MethodCallsAreMatch(expected.Expression, query.Expression);
272+
273+
var queryPosts = query.ToList();
274+
var expectedPosts = expected.ToList();
275+
276+
Assert.That.SequenceEqual(expectedPosts.Select(p => p.Id), queryPosts.Select(p => p.Id));
277+
Assert.That.SequenceEqual(expectedPosts.Select(p => p.Author.Id), queryPosts.Select(p => p.Author.Id));
278+
}
279+
}
280+
281+
[TestMethod]
282+
public void ShouldWorkAsNonGeneric()
283+
{
284+
using (var context = CreateSqliteDbContext())
285+
{
286+
var user = new User();
287+
context.Users.Add(user);
288+
289+
var post = new Post { Title = "first", Author = user };
290+
context.Posts.Add(post);
291+
292+
context.SaveChanges();
293+
294+
var query = context.Users.AsExpandable()
295+
.SelectMany(u => u.Posts.FilterIsActive());
296+
297+
var posts = new List<Post>();
298+
299+
foreach (Post p in query as IEnumerable)
300+
{
301+
posts.Add(p);
302+
}
303+
304+
Assert.AreEqual(1, posts.Count);
305+
Assert.AreEqual("first", posts[0].Title);
306+
Assert.AreEqual(typeof(Post), (query as IQueryable).ElementType);
307+
}
308+
}
309+
310+
[TestMethod]
311+
public async Task ShouldWorkAsAsync()
312+
{
313+
using (var context = CreateSqliteDbContext())
314+
{
315+
var user = new User();
316+
context.Users.Add(user);
317+
318+
var post = new Post { Title = "first", Author = user };
319+
context.Posts.Add(post);
320+
321+
context.SaveChanges();
322+
323+
var query = context.Users.AsExpandable()
324+
.SelectMany(u => u.Posts.FilterIsActive());
325+
326+
var posts = await query.ToListAsync();
327+
328+
Assert.AreEqual(1, posts.Count);
329+
Assert.AreEqual("first", posts[0].Title);
330+
331+
var groupQuery = query
332+
.GroupBy(p => p.CreatorUserId)
333+
.Select(g => g.ToList());
334+
335+
var groupPosts = await groupQuery.FirstOrDefaultAsync();
336+
337+
Assert.AreEqual(1, groupPosts.Count);
338+
Assert.AreEqual("first", groupPosts[0].Title);
339+
}
340+
}
241341
}
242342
}

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: 2.0.0.{build}
1+
version: 2.0.1.{build}
22

33
image: Visual Studio 2017
44

0 commit comments

Comments
 (0)