Skip to content
This repository was archived by the owner on Apr 13, 2023. It is now read-only.

Fix bug list issues no return #511

Merged
merged 1 commit into from
Nov 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions src/git_portfolio/use_cases/gh_close_issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res
import git_portfolio.use_cases.gh as gh
import git_portfolio.use_cases.gh_list_issue as li
import git_portfolio.views as views


class GhCloseIssueUseCase(gh.GhUseCase):
Expand All @@ -17,9 +17,7 @@ def action( # type: ignore[override]
) -> None:
"""Close issues."""
github_service_method = "close_issues_from_repo"
response = li.GhListIssueUseCase(
self.config_manager, self.github_service
).execute(request_object, github_repo)
response = views.issues(github_repo, self.github_service, request_object)
if isinstance(response, res.ResponseSuccess):
self.call_github_service(github_service_method, github_repo, response.value)
else:
Expand Down
6 changes: 2 additions & 4 deletions src/git_portfolio/use_cases/gh_create_pr.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res
import git_portfolio.use_cases.gh as gh
import git_portfolio.use_cases.gh_list_issue as li
import git_portfolio.views as views


class GhCreatePrUseCase(gh.GhUseCase):
Expand All @@ -20,9 +20,7 @@ def action( # type: ignore[override]
"""Create pull requests."""
github_service_method = "create_pull_request_from_repo"
if pr_obj.link_issues:
response = li.GhListIssueUseCase(
self.config_manager, self.github_service, github_repo
).execute(request_object)
response = views.issues(github_repo, self.github_service, request_object)
if isinstance(response, res.ResponseSuccess):
custom_pr = self.github_service.link_issues(pr_obj, response.value)
try:
Expand Down
24 changes: 0 additions & 24 deletions src/git_portfolio/use_cases/gh_list_issue.py

This file was deleted.

6 changes: 2 additions & 4 deletions src/git_portfolio/use_cases/gh_reopen_issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res
import git_portfolio.use_cases.gh as gh
import git_portfolio.use_cases.gh_list_issue as li
import git_portfolio.views as views


class GhReopenIssueUseCase(gh.GhUseCase):
Expand All @@ -17,9 +17,7 @@ def action( # type: ignore[override]
) -> None:
"""Reopen issues."""
github_service_method = "reopen_issues_from_repo"
response = li.GhListIssueUseCase(
self.config_manager, self.github_service
).execute(request_object, github_repo)
response = views.issues(github_repo, self.github_service, request_object)
if isinstance(response, res.ResponseSuccess):
self.call_github_service(github_service_method, github_repo, response.value)
else:
Expand Down
21 changes: 21 additions & 0 deletions src/git_portfolio/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""List issue on Github use case."""
from typing import Union

import git_portfolio.github_service as ghs
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res


def issues(
github_repo: str,
github_service: ghs.GithubService,
request: Union[il.IssueListValidRequest, il.IssueListInvalidRequest],
) -> Union[res.ResponseSuccess, res.ResponseFailure]:
"""Return a list of matching issues."""
if isinstance(request, il.IssueListInvalidRequest):
return res.build_response_from_invalid_request(request)
try:
issues = github_service.list_issues_from_repo(github_repo, request)
except Exception as exc:
return res.ResponseFailure(res.ResponseTypes.SYSTEM_ERROR, exc)
return res.ResponseSuccess(issues)
46 changes: 8 additions & 38 deletions tests/use_cases/test_gh_list_issue.py → tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
import pytest
from pytest_mock import MockerFixture

import git_portfolio.domain.config as c
import git_portfolio.domain.issue as i
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res
import git_portfolio.use_cases.gh_list_issue as li
import git_portfolio.views as views


REPO = "org/repo"


@pytest.fixture
Expand All @@ -29,14 +31,6 @@ def domain_issues() -> list[i.Issue]:
return [issue_1, issue_2]


@pytest.fixture
def mock_config_manager(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking CONFIG_MANAGER."""
mock = mocker.patch("git_portfolio.config_manager.ConfigManager", autospec=True)
mock.return_value.config = c.Config("", "my-token", ["user/repo", "user/repo2"])
return mock


@pytest.fixture
def mock_github_service(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking GithubService."""
Expand All @@ -46,65 +40,47 @@ def mock_github_service(mocker: MockerFixture) -> MockerFixture:


def test_action_without_parameters(
mocker: MockerFixture,
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
domain_issues: list[i.Issue],
) -> None:
"""It returns a list of issues."""
repo = mocker.Mock()
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
github_service.list_issues_from_repo.return_value = domain_issues

request = il.build_list_request()

use_case = li.GhListIssueUseCase(config_manager, github_service)
response = use_case.action(repo, request)
response = views.issues(REPO, github_service, request)

assert bool(response) is True
assert response.value == domain_issues


def test_action_with_filters(
mocker: MockerFixture,
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
domain_issues: list[i.Issue],
) -> None:
"""It returns a list of issues."""
repo = mocker.Mock()
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
github_service.list_issues_from_repo.return_value = domain_issues

qry_filters = {"state__eq": "open"}
request = il.build_list_request(filters=qry_filters)

use_case = li.GhListIssueUseCase(config_manager, github_service)
response = use_case.action(repo, request)
response = views.issues(REPO, github_service, request)

assert bool(response) is True
assert response.value == domain_issues


def test_action_handles_generic_error(
mocker: MockerFixture,
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
) -> None:
"""It returns a system error."""
repo = mocker.Mock()
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
github_service.list_issues_from_repo.side_effect = Exception(
"Just an error message"
)

request = il.build_list_request(filters={})

use_case = li.GhListIssueUseCase(config_manager, github_service)
response = use_case.action(repo, request)
response = views.issues(REPO, github_service, request)

assert bool(response) is False
assert response.value == {
Expand All @@ -114,19 +90,13 @@ def test_action_handles_generic_error(


def test_action_handles_bad_request(
mocker: MockerFixture,
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
) -> None:
"""It returns a parameters error."""
repo = mocker.Mock()
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value

request = il.build_list_request(filters=5) # type: ignore

use_case = li.GhListIssueUseCase(config_manager, github_service)
response = use_case.action(repo, request)
response = views.issues(REPO, github_service, request)

assert bool(response) is False
assert response.value == {
Expand Down
17 changes: 7 additions & 10 deletions tests/use_cases/test_gh_close_issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,22 @@ def mock_github_service(mocker: MockerFixture) -> MockerFixture:


@pytest.fixture
def mock_gh_list_issue_use_case(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking GhListIssueUseCase."""
def mock_views_issues(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking views.issues."""
return mocker.patch(
"git_portfolio.use_cases.gh_list_issue.GhListIssueUseCase",
autospec=True,
"git_portfolio.views.issues",
)


def test_action(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.execute.return_value = (
res.ResponseSuccess()
)
mock_views_issues.return_value = res.ResponseSuccess()
use_case = ghci.GhCloseIssueUseCase(config_manager, github_service)
use_case.action(REPO, REQUEST_ISSUES)

Expand All @@ -59,12 +56,12 @@ def test_action(
def test_action_failed(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.execute.return_value = res.ResponseFailure(
mock_views_issues.return_value = res.ResponseFailure(
res.ResponseTypes.PARAMETERS_ERROR, "msg"
)
use_case = ghci.GhCloseIssueUseCase(config_manager, github_service)
Expand Down
15 changes: 7 additions & 8 deletions tests/use_cases/test_gh_create_pr.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,10 @@ def mock_github_service(mocker: MockerFixture) -> MockerFixture:


@pytest.fixture
def mock_gh_list_issue_use_case(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking GhListIssueUseCase."""
def mock_views_issues(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking views.issues."""
return mocker.patch(
"git_portfolio.use_cases.gh_list_issue.GhListIssueUseCase",
autospec=True,
"git_portfolio.views.issues",
)


Expand Down Expand Up @@ -76,13 +75,13 @@ def domain_prs() -> list[pr.PullRequest]:
def test_action_link_issue_failed(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
domain_prs: list[pr.PullRequest],
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.action.return_value = res.ResponseFailure(
mock_views_issues.return_value.action.return_value = res.ResponseFailure(
res.ResponseTypes.PARAMETERS_ERROR, "msg"
)
request = domain_prs[1]
Expand Down Expand Up @@ -110,13 +109,13 @@ def test_action(
def test_action_link_issue(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
domain_prs: list[pr.PullRequest],
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.action.return_value = res.ResponseSuccess()
mock_views_issues.return_value.action.return_value = res.ResponseSuccess()
request = domain_prs[1]
use_case = ghcp.GhCreatePrUseCase(config_manager, github_service)
use_case.action(REPO, request, REQUEST_ISSUES)
Expand Down
17 changes: 7 additions & 10 deletions tests/use_cases/test_gh_reopen_issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,22 @@ def mock_github_service(mocker: MockerFixture) -> MockerFixture:


@pytest.fixture
def mock_gh_list_issue_use_case(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking GhListIssueUseCase."""
def mock_views_issues(mocker: MockerFixture) -> MockerFixture:
"""Fixture for mocking views.issues."""
return mocker.patch(
"git_portfolio.use_cases.gh_list_issue.GhListIssueUseCase",
autospec=True,
"git_portfolio.views.issues",
)


def test_action(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.execute.return_value = (
res.ResponseSuccess()
)
mock_views_issues.return_value = res.ResponseSuccess()
use_case = ghri.GhReopenIssueUseCase(config_manager, github_service)
use_case.action(REPO, REQUEST_ISSUES)

Expand All @@ -59,12 +56,12 @@ def test_action(
def test_action_failed(
mock_config_manager: MockerFixture,
mock_github_service: MockerFixture,
mock_gh_list_issue_use_case: MockerFixture,
mock_views_issues: MockerFixture,
) -> None:
"""It returns success."""
config_manager = mock_config_manager.return_value
github_service = mock_github_service.return_value
mock_gh_list_issue_use_case.return_value.execute.return_value = res.ResponseFailure(
mock_views_issues.return_value = res.ResponseFailure(
res.ResponseTypes.PARAMETERS_ERROR, "msg"
)
use_case = ghri.GhReopenIssueUseCase(config_manager, github_service)
Expand Down