public async Task CreateAsync_Should_CreatePoint() { //Setup DbContext and DbSet mock var dbContextMock = new Mock <ITodoContext>(); var testTodoPoint = new TodoPoint { PointId = 3, TodoId = 2, Description = "test point 3" }; var testPoints = GetTestTodoPoints(); var todoPointDbSetMock = testPoints.AsQueryable().GetMockDbSet(); dbContextMock.Setup(x => x.DbSet <TodoPoint>()).Returns(todoPointDbSetMock.Object); todoPointDbSetMock.Setup(x => x.Add(It.IsAny <TodoPoint>())) .Callback(() => { testPoints.Add(testTodoPoint); }); //Execute var todoPointService = new TodoPointService(dbContextMock.Object); await todoPointService.CreateAsync(testTodoPoint); var todoPoint = await todoPointService.GetAsync <TodoPoint>(x => x.PointId == testTodoPoint.PointId); //Assert Assert.IsAssignableFrom <TodoPoint>(todoPoint); Assert.Equal(testTodoPoint.Description, todoPoint.Description); Assert.Equal(3, testPoints.Count); }
public async Task UpdateAsync_Should_UpdatePoint() { //Setup DbContext and DbSet mock var dbContextMock = new Mock <ITodoContext>(); var testTodoPoint = new TodoPoint { PointId = 2, TodoId = 1, Description = "updated" }; var testPoints = GetTestTodoPoints(); var pointBefore = testPoints.Where(x => x.PointId == testTodoPoint.PointId).FirstOrDefault(); string pointDescription = pointBefore.Description; var todoPointDbSetMock = testPoints.AsQueryable().GetMockDbSet(); dbContextMock.Setup(x => x.DbSet <TodoPoint>()).Returns(todoPointDbSetMock.Object); todoPointDbSetMock.Setup(x => x.Update(It.IsAny <TodoPoint>())) .Callback(() => { var point = testPoints.Where(x => x.PointId == testTodoPoint.PointId).FirstOrDefault(); point.Description = testTodoPoint.Description; }); //Execute var todoPointService = new TodoPointService(dbContextMock.Object); await todoPointService.UpdateAsync(testTodoPoint); var todoPointAfter = await todoPointService.GetAsync <TodoPoint>(x => x.PointId == testTodoPoint.PointId); //Assert Assert.NotEqual(pointDescription, pointBefore.Description); Assert.IsAssignableFrom <TodoPoint>(todoPointAfter); Assert.Equal(testTodoPoint.Description, todoPointAfter.Description); }