public void MarkTodoDone_TodoAlreadyDone_CallbackError()
        {
            mockTodo.Object.IsDone = true;
            MarkTodoDoneInteractorImpl interactor = new MarkTodoDoneInteractorImpl(mockExecutor.Object, mainThread, mockCallback.Object, mockUserRepository.Object, mockTodoRepository.Object, mockTodo.Object);

            interactor.Run();

            mockCallback.Verify(c => c.OnError(It.Is <string>(s => true)));
        }
        public void MarkTodoDone_ReturnedTodoIsNotDone_CallbackError()
        {
            mockTodo.Object.IsDone     = false;
            mockDoneTodo.Object.IsDone = false;
            mockTodoRepository.Setup(tr => tr.MarkDone(mockTodo.Object)).Returns(mockDoneTodo.Object);

            MarkTodoDoneInteractorImpl interactor = new MarkTodoDoneInteractorImpl(mockExecutor.Object, mainThread, mockCallback.Object, mockUserRepository.Object, mockTodoRepository.Object, mockTodo.Object);

            interactor.Run();

            mockCallback.Verify(c => c.OnError(It.Is <string>(s => true)));
        }
        public void MarkTodoDone_ValidUnDoneTodo_CallRepoAndCallbackTodo(int newPoints)
        {
            mockTodo.Object.IsDone     = false;
            mockDoneTodo.Object.IsDone = true;
            mockTodoRepository.Setup(tr => tr.MarkDone(mockTodo.Object)).Returns(mockDoneTodo.Object);
            mockUserRepository.Setup(ur => ur.GetPoints(mockTodo.Object.Username)).Returns(newPoints);

            MarkTodoDoneInteractorImpl interactor = new MarkTodoDoneInteractorImpl(mockExecutor.Object, mainThread, mockCallback.Object, mockUserRepository.Object, mockTodoRepository.Object, mockTodo.Object);

            interactor.Run();

            mockTodoRepository.Verify(tr => tr.MarkDone(mockTodo.Object), Times.Once);
            mockUserRepository.Verify(ur => ur.GetPoints(mockTodo.Object.Username), Times.Once);

            mockCallback.Verify(c => c.OnTodoMarkedDone(mockDoneTodo.Object, newPoints));
        }
        public void MarkTodoDone(Todo todo)
        {
            MarkTodoDoneInteractor interactor = new MarkTodoDoneInteractorImpl(executor, mainThread, this, todoRepository, userRepository, todo);

            interactor.Execute();
        }