public async Task FindPosts()
        {
            _mockContext.Setup(m => m.Posts).Returns(GetQueryableAsyncMockDbSet <Post>(
                                                         new Post()
            {
                Id    = 1,
                Title = "First"
            },
                                                         new Post()
            {
                Id    = 2,
                Title = "Second"
            },
                                                         new Post()
            {
                Id    = 3,
                Title = "Third"
            }));

            var postRepo   = new EntityFrameworkPostRepository(_mockContext.Object);
            var foundPosts = await postRepo.FindAsync(p => p.Title == "Second");

            Assert.AreEqual(foundPosts.Count(), 1);
            Assert.AreEqual(foundPosts.First().Id, 2);
        }
        public void CreatePostViaContext()
        {
            var postRepo = new EntityFrameworkPostRepository(_mockContext.Object);

            postRepo.Add(new Post());

            _mockPostsSet.Verify(m => m.Add(It.IsAny <Post>()), Times.Once);
        }
        public void DeletePostViaContext()
        {
            _mockPostsSet.Setup(m => m.Find(It.Is <int>(arg => arg == 0))).Returns(new Post());

            var postRepo = new EntityFrameworkPostRepository(_mockContext.Object);

            postRepo.Delete(0);

            _mockPostsSet.Verify(m => m.Remove(It.IsAny <Post>()), Times.Once);
        }
        public void UpdatePostViaContext()
        {
            var postRepo = new EntityFrameworkPostRepository(_mockContext.Object);

            postRepo.Update(new Post()
            {
                Id = 0
            });

            _mockContext.Verify(m => m.SetModified(It.IsAny <Post>()), Times.Once);
        }
        public void GetPost()
        {
            _mockContext.Setup(m => m.Posts).Returns(GetQueryableMockDbSet(
                                                         new Post()
            {
                Id    = 1,
                Title = "First"
            },
                                                         new Post()
            {
                Id    = 2,
                Title = "Second"
            }));
            var postRepo = new EntityFrameworkPostRepository(_mockContext.Object);
            var post     = postRepo.Get(2);

            Assert.AreEqual(post.Title, "Second");
        }
        public async Task GetAllPosts()
        {
            _mockContext.Setup(m => m.Posts).Returns(GetQueryableAsyncMockDbSet <Post>(
                                                         new Post()
            {
                Id    = 1,
                Title = "First"
            },
                                                         new Post()
            {
                Id    = 2,
                Title = "Second"
            },
                                                         new Post()
            {
                Id    = 3,
                Title = "Third"
            }));

            var postRepo = new EntityFrameworkPostRepository(_mockContext.Object);
            var allPosts = await postRepo.GetAllAsync();

            Assert.AreEqual(allPosts.Count(), 3);
        }