public void GetByID_true_ShouldCallQueryAllWithDeletedAndFilterById()
        {
            // Arrange
            var expectedEntity = new Entitity_Fake()
            {
                Id = Guid.NewGuid()
            };
            var entities = new[] {
                expectedEntity,
                new Entitity_Fake {
                    Id = Guid.NewGuid()
                }
            }.AsQueryable();

            var repositoryMock = new Mock <IRepository <Entitity_Fake> >();

            repositoryMock.Setup(x => x.QueryAllWithDeletd).Returns(entities);

            var unitOfWorkMock = new Mock <IUnitOfWork>();

            var postService = new Service_Fake(unitOfWorkMock.Object, repositoryMock.Object);

            // Act
            var result = postService.GetById(expectedEntity.Id, true);

            // Assert
            repositoryMock.Verify(x => x.QueryAllWithDeletd, Times.Once);
            Assert.Contains(expectedEntity, result.ToList());
            Assert.AreEqual(1, result.Count());
        }
        public void Restore_ShouldNotSaveChanges_WhenThereIsNothingToDelete()
        {
            // Arrange
            var entity = new Entitity_Fake {
                Id = Guid.NewGuid()
            };
            var entities = new Entitity_Fake[0].AsQueryable();

            var repositoryMock = new Mock <IRepository <Entitity_Fake> >();

            repositoryMock.SetupGet(x => x.QueryAllWithDeletd).Returns(entities);
            var unitOfWorkMock = new Mock <IUnitOfWork>();

            var postService = new Service_Fake(unitOfWorkMock.Object, repositoryMock.Object);

            // Act
            postService.Restore(entity.Id);

            // Assert
            unitOfWorkMock.Verify(x => x.Complete(), Times.Never);
        }
        public void Restore_ShouldCallRepositoryRestoreAndSaveChanges()
        {
            // Arrange
            var entity = new Entitity_Fake {
                Id = Guid.NewGuid()
            };
            var entities = new[] { entity }.AsQueryable();

            var repositoryMock = new Mock <IRepository <Entitity_Fake> >();

            repositoryMock.SetupGet(x => x.QueryAllWithDeletd).Returns(entities);
            var unitOfWorkMock = new Mock <IUnitOfWork>();

            var postService = new Service_Fake(unitOfWorkMock.Object, repositoryMock.Object);

            // Act
            postService.Restore(entity.Id);

            // Assert
            repositoryMock.Verify(x => x.Restore(It.Is <Entitity_Fake>(y => y == entity)), Times.Once);
            unitOfWorkMock.Verify(x => x.Complete(), Times.Once);
        }