Advertisement
Guest User

Untitled

a guest
May 6th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1.  
  2. namespace Moq.Context {
  3.  
  4. public static class DbContextMockExtension
  5. {
  6. public static Mock<AHContext> SetupPartOfTheContextWith<T>(this Mock<AHContext> mockContext, List<T> listOfT, Expression<Func<AHContext, DbSet<T>>> setupReturn) where T : BaseEntity
  7. {
  8. var queryable = listOfT.AsQueryable();
  9.  
  10. var mockSet = new Mock<DbSet<T>>();
  11. mockSet.Setup(x => x.Add(It.IsAny<T>())).Callback((T entity) =>
  12. {
  13. listOfT.Add(entity);
  14. entity.Id = listOfT.Max(x => x.Id) + 1;
  15. });
  16. mockSet.Setup(x => x.AddRange(It.IsAny<IEnumerable<T>>())).Callback((IEnumerable<T> entities) =>
  17. {
  18. var collection = entities as List<T> ?? entities.ToList();
  19. listOfT.AddRange(collection);
  20. collection.ForEach(entity => entity.Id = listOfT.Max(x => x.Id) + 1);
  21. });
  22. mockSet.As<IQueryable<T>>().Setup(m => m.Provider).Returns(queryable.Provider);
  23. mockSet.As<IQueryable<T>>().Setup(m => m.Expression).Returns(queryable.Expression);
  24. mockSet.As<IQueryable<T>>().Setup(m => m.ElementType).Returns(queryable.ElementType);
  25. mockSet.As<IQueryable<T>>().Setup(m => m.GetEnumerator()).Returns(queryable.GetEnumerator());
  26.  
  27. mockContext.Setup(x => x.Set<T>()).Returns(mockSet.Object);
  28. mockContext.Setup(setupReturn).Returns(mockSet.Object);
  29.  
  30. return mockContext;
  31. }
  32. }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement