예제 #1
0
    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
예제 #2
0
 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)
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
    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
예제 #9
0
    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
예제 #10
0
    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),
        ]
예제 #11
0
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)
예제 #12
0
 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
예제 #13
0
    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
예제 #14
0
    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
예제 #15
0
    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
예제 #16
0
    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
예제 #17
0
    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