public void ConstructorShould_SetCorrectedDbContext()
        {
            // Arrange & Act
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <ISportSquareDbContext>();

            mockDbContext.Setup(db => db.Set <IDbModel>()).Returns(mockDbSet.Object);

            var fakeGenericRepository = new FakeGenericRepository(mockDbContext.Object);

            Assert.AreSame(mockDbContext.Object, fakeGenericRepository.BaseDbContext);
        }
        public void Add_ShouldThrow_WhenEntityIsNotValid()
        {
            // Arrange & Act
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <ISportSquareDbContext>();

            mockDbContext.Setup(db => db.Set <IDbModel>()).Returns(mockDbSet.Object);

            var fakeGenericRepository = new FakeGenericRepository(mockDbContext.Object);

            // Assert
            Assert.Throws <ArgumentNullException>(() => fakeGenericRepository.Add(null));
        }
        public void GetById_Should_ReturnNUll_WhenSearchIdIsValid_ButEntityDoesntExist()
        {
            // Arrange
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <ISportSquareDbContext>();

            mockDbContext.Setup(db => db.Set <IDbModel>()).Returns(mockDbSet.Object);

            var fakeGenericRepository = new FakeGenericRepository(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <object>())).Returns <IDbModel>(null);

            // Act
            var id           = 777;
            var resultEntity = fakeGenericRepository.GetById(id);

            // Assert
            Assert.IsNull(resultEntity);
        }
        public void GetById_Should_ReturnSearchedEntity_WhenSearchIdAndEntityExist()
        {
            // Arrange
            var entity        = new Mock <IDbModel>();
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <ISportSquareDbContext>();

            mockDbContext.Setup(db => db.Set <IDbModel>()).Returns(mockDbSet.Object);

            var fakeGenericRepository = new FakeGenericRepository(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <object>())).Returns(entity.Object);

            // Act
            var id           = 777;
            var resultEntity = fakeGenericRepository.GetById(id);

            // Assert
            Assert.AreSame(entity.Object, resultEntity);
        }
        public void GetById_ShouldInvoke_dbSetFind_WhenSearchId_IsValid()
        {
            // Arrange
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <ISportSquareDbContext>();

            mockDbContext.Setup(db => db.Set <IDbModel>()).Returns(mockDbSet.Object);

            var fakeGenericRepository = new FakeGenericRepository(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <object>())).Returns <IDbModel>(null);

            // Act
            var id = 777;

            fakeGenericRepository.GetById(id);

            // Assert
            mockDbSet.Verify((x) => x.Find(It.IsAny <object>()), Times.Once);
        }