public async Task VerifyTaskName()
        {
            // Arrange
            var contextOptions = new DbContextOptions <ProjectManagerDbContext>();
            var mockContext    = new Mock <ProjectManagerDbContext>(contextOptions);

            var taskRepository = new TaskDetailsRepository(mockContext.Object);

            IQueryable <Models.TaskDetailModel> taskDetailsList = new List <Models.TaskDetailModel>()
            {
                new Models.TaskDetailModel()
                {
                    Id = 1, Name = "Task 1", Priority = 10
                },
                new Models.TaskDetailModel()
                {
                    Id = 2, Name = "Task 2", Priority = 20
                },
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Models.TaskDetailModel> >();

            mockSet.As <IAsyncEnumerable <Models.TaskDetailModel> >()
            .Setup(m => m.GetEnumerator())
            .Returns(new TestAsyncEnumerator <Models.TaskDetailModel>(taskDetailsList.GetEnumerator()));

            mockSet.As <IQueryable <Models.TaskDetailModel> >()
            .Setup(m => m.Provider)
            .Returns(new TestAsyncQueryProvider <Models.TaskDetailModel>(taskDetailsList.Provider));

            mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.Expression).Returns(taskDetailsList.Expression);
            mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.ElementType).Returns(taskDetailsList.ElementType);
            mockSet.As <IQueryable <Models.TaskDetailModel> >().Setup(m => m.GetEnumerator()).Returns(() => taskDetailsList.GetEnumerator());

            mockContext.Setup(m => m.Tasks).Returns(mockSet.Object);

            // Act
            var taskDetails = await taskRepository.Get(2);

            // Assert
            Assert.Equal("Task 2", taskDetails.Name);
        }
        public async Task VerifyUpdateSaveChangesCalledOnce()
        {
            // Arrange
            var contextOptions = new DbContextOptions <ProjectManagerDbContext>();
            var mockContext    = new Mock <ProjectManagerDbContext>(contextOptions);

            var taskRepository = new TaskDetailsRepository(mockContext.Object);

            var taskDetail = new Models.TaskDetailModel()
            {
                Id = 1, Name = "Task 1 ", Priority = 10
            };

            var mockSet = new Mock <DbSet <Models.TaskDetailModel> >();

            mockContext.Setup(m => m.Tasks).Returns(mockSet.Object);

            // Act
            await taskRepository.Update(1, taskDetail);

            // Assert
            mockSet.Verify(m => m.Update(taskDetail), Times.Once);
            mockContext.Verify(m => m.SaveChangesAsync(System.Threading.CancellationToken.None), Times.Once);
        }