def get_tasks_response(self, tasks_details_dtos):

        project_utils = ProjectPresenterImplementation()
        is_tasks_not_empty = tasks_details_dtos
        if is_tasks_not_empty:

            project_dto = tasks_details_dtos[0].project

            project_details = project_utils.get_project_details_response(
                project_dto)
        else:
            project_details = {}

        tasks_details_responses = [
            self.get_create_task_response(task_details_dto)
            for task_details_dto in tasks_details_dtos
        ]

        tasks_details_response = []

        for task_details_response in tasks_details_responses:
            task_details_response.pop('project')
            tasks_details_response.append(task_details_response)

        response = {
            "total_tasks": len(tasks_details_dtos),
            "project": project_details,
            "tasks": tasks_details_response
        }
        return response
コード例 #2
0
    def test_get_project_details_response(self, snapshot):

        #arrange
        presenter = ProjectPresenterImplementation()

        #act
        project_details = presenter.get_project_details_response(
            project_details_dto=project_details_dto)

        #assert
        snapshot.assert_match(project_details, 'project_details')
コード例 #3
0
    def test_raise_invalid_offset_value_exception(self, snapshot):

        #arrange
        presenter = ProjectPresenterImplementation()

        #act
        with pytest.raises(BadRequest) as error:
            presenter.raise_invalid_offset_value_exception()

        #assert
        error_message = str(error.value)
        snapshot.assert_match(error_message, 'error_message')
コード例 #4
0
    def test_raise_unauthorized_developer_exception(self, snapshot):

        #arrange
        presenter = ProjectPresenterImplementation()

        #act
        with pytest.raises(Unauthorized) as error:
            presenter.raise_unauthorized_developer_exception()

        #assert
        error_message = str(error.value)
        snapshot.assert_match(error_message, 'error_message')
コード例 #5
0
    def test_raise_invalid_transition_exception(self, snapshot):

        #arrange
        presenter = ProjectPresenterImplementation()

        #act
        with pytest.raises(NotFound) as error:
            presenter.raise_invalid_transition_exception()

        #assert
        error_message = str(error.value)
        snapshot.assert_match(error_message, 'error_message')
コード例 #6
0
    def test_get_projects_response(self, snapshot):

        #arrange
        presenter = ProjectPresenterImplementation()

        #act
        projects_details = presenter.get_projects_response(
                total_projects_count=1,
                all_projects_details_dtos=projects_details_dtos)

        #assert
        snapshot.assert_match(projects_details, 'projects_details')
コード例 #7
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    request_data = kwargs['request_data']
    project_storage = ProjectStorageImplementation()
    task_storage = TaskStorageImplementation()

    task_presenter = TaskPresenterImplementation()
    project_presenter = ProjectPresenterImplementation()
    interactor = CreateTaskInteractor(
        project_storage=project_storage,
        task_storage=task_storage
        )

    print("*"*100,"\n"*5,request_data['state_id'],"\n"*10)
    project_id = kwargs['project_id']
    user_id = user.user_id
    task_data = {
        "project_id": project_id,
        "issue_type": request_data['issue_type'],
        "title": request_data['title'],
        "description": request_data['description'],
        "state_id": request_data['state_id']
    }

    task_details = interactor.create_task_wrapper(
        user_id=user_id,
        task_data=task_data,
        project_presenter=project_presenter,
        task_presenter=task_presenter
        )
    print("\n"*5,task_details,"\n"*5)
    response_data = json.dumps(task_details)
    return HttpResponse(response_data, status=201)
コード例 #8
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    request_data = kwargs['request_data']
    storage = ProjectStorageImplementation()
    presenter = ProjectPresenterImplementation()
    interactor = CreateProjectInteractor(
        storage=storage
        )

    user_id = user.user_id
    developers = request_data.get('developers')
    is_developers_empty = not developers
    if is_developers_empty:
        developers = []

    project_data = {
        "name": request_data['name'],
        "description": request_data['description'],
        "workflow_id": request_data['workflow_id'],
        "project_type": request_data['project_type'],
        "developers": developers
    }

    project_details = interactor.create_project_wrapper(
        user_id=user_id,
        project_data=project_data,
        presenter=presenter
        )
    project_details['success_message'] = "Project Created Succesfully"

    response_data = json.dumps(project_details)
    return HttpResponse(response_data, status=201)
コード例 #9
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    project_id = kwargs['project_id']
    task_id = kwargs['task_id']

    project_storage = ProjectStorageImplementation()
    task_storage = TaskStorageImplementation()

    task_presenter = TaskPresenterImplementation()
    project_presenter = ProjectPresenterImplementation()
    interactor = GetStatesForTaskInteractor(
        project_storage=project_storage,
        task_storage=task_storage)

    task_state_data = {
        "user_id": user.user_id,
        "project_id": project_id,
        "task_id": task_id
    }

    task_states = \
        interactor.get_states_for_task_based_on_current_state_wrapper(
        task_state_data,
        project_presenter,
        task_presenter)

    response_data = json.dumps(task_states)
    return HttpResponse(response_data, status=200)
コード例 #10
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    request_data = kwargs['request_data']
    project_id = kwargs['project_id']
    task_id = kwargs['task_id']
    to_state_id = request_data['to_state_id']

    project_storage = ProjectStorageImplementation()
    task_storage = TaskStorageImplementation()

    task_presenter = TaskPresenterImplementation()
    project_presenter = ProjectPresenterImplementation()
    interactor = GetStatesTransitionDetailsInteractor(
        project_storage=project_storage, task_storage=task_storage)

    transition_details_query_dict = {
        "user_id": user.user_id,
        "project_id": project_id,
        "task_id": task_id,
        "to_state_id": to_state_id
    }

    states_transition_details = interactor\
        .get_states_transition_details_wrapper(transition_details_query_dict,
                                               project_presenter,
                                               task_presenter)

    response_data = json.dumps(states_transition_details)

    return HttpResponse(response_data, status=200)
    def get_create_task_response(self, task_details_dto):

        project_utils = ProjectPresenterImplementation()
        project_dto = task_details_dto.project
        project_details = project_utils.get_project_details_response(
            project_dto)
        assignee_id = task_details_dto.assignee_id

        task_details_response = {
            "project": project_details,
            "task_id": task_details_dto.task_id,
            "issue_type": task_details_dto.issue_type,
            "title": task_details_dto.title,
            "assignee_id": assignee_id,
            "description": task_details_dto.description,
            "state": task_details_dto.state
        }

        return task_details_response
コード例 #12
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    project_id = kwargs['project_id']
    project_storage = ProjectStorageImplementation()
    task_storage = TaskStorageImplementation()

    task_presenter = TaskPresenterImplementation()
    project_presenter = ProjectPresenterImplementation()
    interactor = GetTasksInteractor(project_storage=project_storage,
                                    task_storage=task_storage)

    user_id = user.user_id
    tasks_details = interactor.get_tasks_wrapper(
        user_id=user_id,
        project_id=project_id,
        project_presenter=project_presenter,
        task_presenter=task_presenter)

    response_data = json.dumps(tasks_details)
    return HttpResponse(response_data, status=200)
コード例 #13
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    query_params = kwargs['request_query_params'].__dict__

    project_storage = ProjectStorageImplementation()
    project_presenter = ProjectPresenterImplementation()
    interactor = GetProjectsInteractor(project_storage=project_storage)

    user_id = user.user_id
    limit = query_params.get('limit', DEFAULT_LIMIT)
    offset = query_params.get('offset', DEFAULT_OFFSET)

    projects_details = interactor.get_projects_wrapper(
        user_id=user_id,
        offset=offset,
        limit=limit,
        project_presenter=project_presenter)

    response_data = json.dumps(projects_details)
    return HttpResponse(response_data, status=200)
コード例 #14
0
def api_wrapper(*args, **kwargs):
    # ---------MOCK IMPLEMENTATION---------
    user = kwargs['user']
    request_data = kwargs['request_data']

    project_storage = ProjectStorageImplementation()
    task_storage = TaskStorageImplementation()

    task_presenter = TaskPresenterImplementation()
    project_presenter = ProjectPresenterImplementation()

    interactor = TaskStateTransitionInteractor(project_storage=project_storage,
                                               task_storage=task_storage)

    project_id = kwargs['project_id']
    task_id = kwargs['task_id']
    checklist = request_data['checklist']

    user_id = user.user_id

    update_task_state_data = {
        "user_id": user_id,
        "project_id": project_id,
        "task_id": task_id,
        "from_state_id": request_data.get('from_state_id'),
        "to_state_id": request_data.get('to_state_id'),
        "checklist": checklist
    }

    task_details = interactor.update_task_state_wrapper(
        update_task_state_data,
        project_presenter=project_presenter,
        task_presenter=task_presenter)

    response_data = json.dumps(task_details)
    return HttpResponse(response_data, status=201)