def test_add_todo_fails_on_invalid_user_id(self): server_utils = ServerUtils(todo_db=self.todo_db) todo = server_utils.add_todo(ToDo(user=User(id=0))) assert todo.status == todo_pb2.FAILED todo = server_utils.add_todo(ToDo(user=User(id=-2))) assert todo.status == todo_pb2.FAILED
def add_user(self, user): if isinstance(user, User) and user.name: user_dict = self.todo_db.add_user(name=user.name) if user_dict['status'] in (ToDoDb.SUCCESS, ToDoDb.EXISTS): user.id = user_dict['user'].id user.status = todo_pb2.SUCCESS return user return User(status=todo_pb2.FAILED)
def test_update_todo_is_done(self): self.todo_db.update_todo.return_value = { 'status': ToDoDb.MARKED_AS_DONE } server_utils = ServerUtils(todo_db=self.todo_db) todo = server_utils.update_todo(ToDo(id=1, user=User(id=1), is_done=True)) assert todo.status == todo_pb2.SUCCESS
def add_todo(self, user_id, todo_text): self._is_valid_id(user_id, 'user_id') todo = ToDo(user=User(id=user_id), text=str(todo_text)) todo_response = self.stub.AddToDo(todo) if todo_response.status == SUCCESS: return todo_response return None
def get_todo_list(self, user_id): self._is_valid_id(user_id, 'user_id') user = User(id=user_id) todo_list = self.stub.GetToDoList(user) todo_item_list = [] for todo in todo_list: if todo.status != FAILED: todo_item_list.append(todo) return todo_item_list
def test_add_todo(self): user_id = 1 self.todo_db.add_todo.return_value = { 'status': ToDoDb.SUCCESS, 'todo': models.ToDo(id=user_id) } server_utils = ServerUtils(todo_db=self.todo_db) todo = server_utils.add_todo(ToDo(text="Todo", user=User(id=1))) assert todo.status == todo_pb2.SUCCESS assert todo.id == user_id
def test_todo_list_wrong_arguments(self): server_utils = ServerUtils(todo_db=self.todo_db) todo_list = server_utils.get_todo_list(None) assert todo_list[0].status == todo_pb2.FAILED todo_list = server_utils.get_todo_list("Test") assert todo_list[0].status == todo_pb2.FAILED todo_list = server_utils.get_todo_list(User(id=0)) assert todo_list[0].status == todo_pb2.FAILED
def test_add_user(self): user_id = 1 self.todo_db.add_user.return_value = { 'status': ToDoDb.SUCCESS, 'user': models.User(id=user_id) } server_utils = ServerUtils(todo_db=self.todo_db) user = server_utils.add_user(user=User(name="Test user")) assert user.id == user_id assert user.name == "Test user" assert user.status == todo_pb2.SUCCESS
def test_get_todo_list(self): todo_list_data = [ models.ToDo(id=1, user=models.User(id=1), text="Todo 1", is_done=True), models.ToDo(id=1, user=models.User(id=1), text="Todo 1", is_done=True), ] todo_list = [] for todo_item in todo_list_data: todo = ToDo( id=todo_item.id, user=User(id=todo_item.user.id), text=todo_item.text, is_done=todo_item.is_done, status=todo_pb2.SUCCESS ) todo_list.append(todo) self.todo_db.get_todo_list.return_value = { 'todo_list': todo_list_data, 'status': ToDoDb.SUCCESS } server_utils = ServerUtils(todo_db=self.todo_db) assert server_utils.get_todo_list(User(id=1)) == todo_list
def get_todo_list(self, user): if isinstance(user, User) and user.id > 0: todo_list = [] todo_list_dict = self.todo_db.get_todo_list(user.id) if todo_list_dict['status'] == ToDoDb.SUCCESS: for current_todo in todo_list_dict['todo_list']: todo = ToDo(id=current_todo.id, user=User(id=current_todo.user.id), text=current_todo.text, is_done=current_todo.is_done, status=todo_pb2.SUCCESS) todo_list.append(todo) return todo_list return [ ToDo(status=todo_pb2.FAILED), ]
class TestClientStub: stub = Mock(spec=TodoServiceStub(channel=grpc.insecure_channel(''))) user = Mock(spec=User()) todo = Mock(spec=ToDo()) id_test_arguments = [0, -20, "test", 15.5] def test_add_user(self): self.user.status = SUCCESS self.stub.AddUser.return_value = self.user client_stub = ClientStub(stub=self.stub) assert client_stub.add_user("Test") == self.user def test_add_user_returns_none_on_failure(self): self.user.status = FAILED self.stub.AddUser.return_value = self.user client_stub = ClientStub(stub=self.stub) assert client_stub.add_user("Test") is None def test_add_todo(self): self.todo.status = SUCCESS self.stub.AddToDo.return_value = self.todo client_stub = ClientStub(stub=self.stub) assert client_stub.add_todo(1, "Test todo") == self.todo def test_add_todo_returns_none_on_failure(self): self.todo.status = FAILED self.stub.AddToDo.return_value = self.todo client_stub = ClientStub(stub=self.stub) assert client_stub.add_todo(1, "Test todo") is None def add_todo_raises_value_error(self): client_stub = ClientStub(stub=self.stub) for user_id in self.id_test_arguments: with pytest.raises(ValueError): client_stub.add_todo(user_id, "Todo test") def test_get_todo_list(self): self.todo.status = SUCCESS todo_list = [self.todo, self.todo, self.todo] self.stub.GetToDoList.return_value = todo_list client_stub = ClientStub(stub=self.stub) assert client_stub.get_todo_list(1) == todo_list def test_get_todo_list_raise_value_error_for_todo_id(self): client_stub = ClientStub(stub=self.stub) for todo_id in self.id_test_arguments: with pytest.raises(ValueError): client_stub.get_todo_list(todo_id) def test_update_todo_with_delete(self): self.todo.status = SUCCESS self.stub.UpdateToDo.return_value = self.todo client_stub = ClientStub(stub=self.stub) assert client_stub.update_todo(1, delete=True) def test_update_todo_with_delete_raise_value_error(self): client_stub = ClientStub(stub=self.stub) for todo_id in self.id_test_arguments: with pytest.raises(ValueError): client_stub.update_todo(todo_id, delete=True) def test_update_todo_with_delete_is_done_raises_value_error(self): client_stub = ClientStub(stub=self.stub) with pytest.raises(ValueError): client_stub.update_todo(1, delete=True, is_done=True) def test_update_todo_with_is_done(self): self.todo.status = SUCCESS self.stub.UpdateToDo.return_value = self.todo client_stub = ClientStub(stub=self.stub) assert client_stub.update_todo(1, is_done=True)
def add_user(self, user_name): user = User(name=str(user_name)) user_response = self.stub.AddUser(user) if user_response.status == SUCCESS: return user_response return None
def test_add_todo_fails_on_db_failed_status(self): self.todo_db.add_todo.return_value = {'status': ToDoDb.FAILED} server_utils = ServerUtils(todo_db=self.todo_db) todo = server_utils.add_todo(ToDo(text="Todo", user=User(id=1))) assert todo.status == todo_pb2.FAILED
def test_add_todo_fails_without_text(self): server_utils = ServerUtils(todo_db=self.todo_db) todo = server_utils.add_todo(ToDo(user=User(id=1))) assert todo.status == todo_pb2.FAILED
def test_add_user_fails_with_empty_name(self): server_utils = ServerUtils(todo_db=self.todo_db) user = server_utils.add_user(User()) assert user.status == todo_pb2.FAILED
def test_add_user_fails(self): self.todo_db.add_user.return_value = {'status': ToDoDb.FAILED} server_utils = ServerUtils(todo_db=self.todo_db) user = server_utils.add_user(User(name="Test user")) assert user.status == todo_pb2.FAILED
def test_todo_list_db_failed_status(self): self.todo_db.get_todo_list.return_value = {'status': ToDoDb.FAILED} server_utils = ServerUtils(todo_db=self.todo_db) todo_list = server_utils.get_todo_list(User(id=1)) assert todo_list[0].status == todo_pb2.FAILED