public void EfRepo_Should_Call_GetDbSet()
        {
            //Arrange & Act
            FakeClass fake        = new FakeClass();
            var       mockedDbSet = new Mock <IDbSet <FakeClass> >();

            mockedDbSet.Setup(x => x.Add(fake)).Verifiable();
            var mockedDbContext = new Mock <IEfSociumDbContext>();

            mockedDbContext.Setup(c => c.GetDbSet <FakeClass>()).Returns(mockedDbSet.Object);
            EfRepository <FakeClass> repo = new EfRepository <FakeClass>(mockedDbContext.Object);

            //Assert
            mockedDbContext.Verify(c => c.GetDbSet <FakeClass>(), Times.Once);
        }
        public void EfRepo_Call_Find_Should_Return_Correct()
        {
            //Arrange
            object    id          = 1;
            FakeClass fake        = new FakeClass();
            var       mockedDbSet = new Mock <IDbSet <FakeClass> >();

            mockedDbSet.Setup(x => x.Find(It.IsAny <object>())).Returns(fake);
            var mockedDbContext = new Mock <IEfSociumDbContext>();

            mockedDbContext.Setup(c => c.GetDbSet <FakeClass>()).Returns(mockedDbSet.Object);
            EfRepository <FakeClass> repo = new EfRepository <FakeClass>(mockedDbContext.Object);

            //Act
            var res = repo.GetBy(id);

            //Assert
            Assert.AreSame(fake, res);
        }
        public void EfRepo_Call_Find_When_Call_GetBy()
        {
            //Arrange
            object    id          = 1;
            FakeClass fake        = new FakeClass();
            var       mockedDbSet = new Mock <IDbSet <FakeClass> >();

            mockedDbSet.Setup(x => x.Find(It.IsAny <object>())).Verifiable();
            var mockedDbContext = new Mock <IEfSociumDbContext>();

            mockedDbContext.Setup(c => c.GetDbSet <FakeClass>()).Returns(mockedDbSet.Object);
            EfRepository <FakeClass> repo = new EfRepository <FakeClass>(mockedDbContext.Object);

            //Act
            repo.GetBy(id);

            //Assert
            mockedDbSet.Verify(s => s.Find(It.IsAny <object>()), Times.Once);
        }
        public void EfRepo_Should_Return_Querable_When_GetAll()
        {
            //Arrange
            var mockedCollection = FakeClass.GetCollection();
            Expression <Func <FakeClass, bool> > expectedExpression = x => x.Id > 0;
            IEnumerable <FakeClass> expectedResult = mockedCollection.Where(expectedExpression.Compile()).ToList();
            var queryable   = mockedCollection.AsQueryable();
            var mockedDbSet = new Mock <IDbSet <FakeClass> >();

            mockedDbSet.As <IQueryable <FakeClass> >().Setup(m => m.Provider).Returns(queryable.Provider);
            mockedDbSet.As <IQueryable <FakeClass> >().Setup(m => m.Expression).Returns(queryable.Expression);
            mockedDbSet.As <IQueryable <FakeClass> >().Setup(m => m.ElementType).Returns(queryable.ElementType);
            mockedDbSet.As <IQueryable <FakeClass> >().Setup(m => m.GetEnumerator()).Returns(queryable.GetEnumerator());
            var mockedDbContext = new Mock <IEfSociumDbContext>();

            mockedDbContext.Setup(c => c.GetDbSet <FakeClass>()).Returns(mockedDbSet.Object);
            EfRepository <FakeClass> repo = new EfRepository <FakeClass>(mockedDbContext.Object);

            //Act
            var res = repo.GetAll();

            //Assert
            CollectionAssert.AreEquivalent(expectedResult, res.ToList());
        }