コード例 #1
0
        public async Task Delete_Removes_TodoItem()
        {
            var dbContext = new Mock <TodoAppContext>();
            ITodoItemProvider provider = new TodoItemProvider(dbContext.Object);
            var items = new List <TodoItemDAO>()
            {
                new TodoItemDAO()
                {
                    Id = 1, Name = "TestItem1"
                },
                new TodoItemDAO()
                {
                    Id = 2, Name = "TestItem2"
                },
                new TodoItemDAO()
                {
                    Id = 3, Name = "TestItem3"
                }
            };

            dbContext
            .Setup(m => m.TodoItems.Remove(It.IsAny <TodoItemDAO>()))
            .Callback <TodoItemDAO>((entity) => items.Remove(entity));
            int idToDelete = 1;

            dbContext
            .Setup(s => s.TodoItems.Find(idToDelete))
            .Returns(items.Single(s => s.Id == idToDelete));

            await provider.Delete(idToDelete);

            Assert.Equal(2, items.Count());
            dbContext.Verify(s => s.TodoItems.Find(idToDelete), Times.Once);
            dbContext.Verify(s => s.TodoItems.Remove(It.IsAny <TodoItemDAO>()), Times.Once);
            dbContext.Verify(s => s.SaveChangesAsync(new CancellationToken()), Times.Once);
        }