public async Task TestTodoService_GetById_ShouldCallFindRepositoryAndAutoMapper() { // Arrange var expectedTodos = new TodoModel[] { }; // mock repository Mock <IRepository <TodoModel> > todoRepository = new Mock <IRepository <TodoModel> >(); todoRepository.Setup(repo => repo.Find(It.IsAny <Expression <Func <TodoModel, bool> > >())) .Returns(expectedTodos.AsQueryable()); // mock automapper var mapperMock = new Mock <IMapper>(); mapperMock.Setup(m => m.Map <Todo>(It.IsAny <TodoModel>())) .Returns(It.IsAny <Todo>()); var cacheMock = new Mock <ICacheProvider>(); cacheMock.Setup(x => x.GetAsync <Todo>(It.IsAny <string>())).ReturnsAsync(It.IsAny <Todo>()); cacheMock.Setup(x => x.SetAsync <Todo>(It.IsAny <string>(), It.IsAny <Todo>(), TimeSpan.FromSeconds(10))).Returns(Task.CompletedTask); cacheMock.Setup(x => x.CacheOptions).Returns(new CacheOptions { DefaultCacheTime = 10000, IsCachingEnabled = false }); var todoService = new TodoService(todoRepository.Object, mapperMock.Object, cacheMock.Object); // Act var result = await todoService.GetByIdAsync(1); // Assert todoRepository.Verify(x => x.Find(It.IsAny <Expression <Func <TodoModel, bool> > >()), Times.Once); mapperMock.Verify(x => x.Map <Todo>(It.IsAny <TodoModel>()), Times.Once); }
public void TestTodoService_GetAll_ShouldCallFindAllRepositoryAndAutoMapper() { // Arrange var expectedTodos = new TodoModel[] { }; Mock <IRepository <TodoModel> > todoRepository = new Mock <IRepository <TodoModel> >(); todoRepository.Setup(x => x.FindAll()) .Returns(expectedTodos.AsQueryable()); var mapperMock = new Mock <IMapper>(); mapperMock.Setup(m => m.Map <IEnumerable <Todo> >(It.IsAny <IEnumerable <TodoModel> >())) .Returns(It.IsAny <IEnumerable <Todo> >()); var cacheMock = new Mock <ICacheProvider>(); var todoService = new TodoService(todoRepository.Object, mapperMock.Object, cacheMock.Object); // Act var results = todoService.GetAllData(); // Assert todoRepository.Verify(x => x.FindAll(), Times.Once); mapperMock.Verify(x => x.Map <IEnumerable <Todo> >(It.IsAny <IEnumerable <TodoModel> >()), Times.Once); }
public void TestTodoService_UnComplete_ShouldCompleteTodo() { // Arrange var expectedTodos = new TodoModel[] { new TodoModel { Id = 1, IsCompleted = true } }; var mappedTodoDomainModel = new Mock <Todo>(); // mock repository Mock <IRepository <TodoModel> > todoRepository = new Mock <IRepository <TodoModel> >(); todoRepository.Setup(repo => repo.Find(It.IsAny <Expression <Func <TodoModel, bool> > >())) .Returns(expectedTodos.AsQueryable()); todoRepository.Setup(repo => repo.Update(It.IsAny <TodoModel>())); // mock automapper var mapperMock = new Mock <IMapper>(); mapperMock.Setup(m => m.Map <Todo>(It.IsAny <TodoModel>())) .Returns(mappedTodoDomainModel.Object); mapperMock.Setup(m => m.Map <Todo, TodoModel>(It.IsAny <Todo>(), It.IsAny <TodoModel>())) .Returns(It.IsAny <TodoModel>()); var cacheMock = new Mock <ICacheProvider>(); var todoService = new TodoService(todoRepository.Object, mapperMock.Object, cacheMock.Object); // Act todoService.UnComplete(1); // Assert todoRepository.Verify(x => x.Find(It.IsAny <Expression <Func <TodoModel, bool> > >()), Times.Once); todoRepository.Verify(x => x.Update(It.IsAny <TodoModel>()), Times.Once); mapperMock.Verify(x => x.Map <Todo>(It.IsAny <TodoModel>()), Times.Once); mapperMock.Verify(x => x.Map <Todo, TodoModel>(It.IsAny <Todo>(), It.IsAny <TodoModel>()), Times.Once); mappedTodoDomainModel.Verify(x => x.UnComplete(), Times.Once); }