예제 #1
0
def test_build_list_request_with_incorrect_filter_keys() -> None:
    """It returns invalid request."""
    request = build_list_request(filters={"a": 1})

    assert request.has_errors()
    assert request.errors[0]["parameter"] == "filters"
    assert bool(request) is False
예제 #2
0
def test_build_list_request_with_invalid_filters_parameter() -> None:
    """It returns invalid request."""
    request = build_list_request(filters=5)

    assert request.has_errors()
    assert request.errors[0]["parameter"] == "filters"
    assert bool(request) is False
예제 #3
0
def test_build_list_request_accepted_obj_values(value: str) -> None:
    """It returns valid request."""
    filters = {"obj__eq": value}

    request = build_list_request(filters=filters)

    assert request.filters == filters
    assert bool(request) is True
예제 #4
0
def test_build_list_request_accepted_filters(key: str) -> None:
    """It returns valid request."""
    filters = {key: "all"}

    request = build_list_request(filters=filters)

    assert request.filters == filters
    assert bool(request) is True
예제 #5
0
def test_build_list_request_rejected_obj_values(value: str) -> None:
    """It returns invalid request."""
    filters = {"obj__eq": value}

    request = build_list_request(filters=filters)

    assert request.has_errors()
    assert request.errors[0]["parameter"] == "filters"
    assert bool(request) is False
예제 #6
0
def test_build_list_request_rejected_filters(key: str) -> None:
    """It returns invalid request."""
    filters = {key: 1}

    request = build_list_request(filters=filters)

    assert request.has_errors()
    assert request.errors[0]["parameter"] == "filters"
    assert bool(request) is False
예제 #7
0
def test_execute_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()

    response = li.GhListIssueUseCase(config_manager,
                                     github_service).execute(request, repo)

    assert bool(response) is True
    assert response.value == domain_issues
예제 #8
0
def test_execute_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

    response = li.GhListIssueUseCase(config_manager,
                                     github_service).execute(request, repo)

    assert bool(response) is False
    assert response.value == {
        "type": res.ResponseTypes.PARAMETERS_ERROR,
        "message": "filters: Is not iterable",
    }
예제 #9
0
def test_execute_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={})

    response = li.GhListIssueUseCase(config_manager,
                                     github_service).execute(request, repo)

    assert bool(response) is False
    assert response.value == {
        "type": res.ResponseTypes.SYSTEM_ERROR,
        "message": "Exception: Just an error message",
    }
예제 #10
0
"""Test cases for the Github close issue use case."""
import pytest
from pytest_mock import MockerFixture

import git_portfolio.domain.config as c
import git_portfolio.request_objects.issue_list as il
import git_portfolio.responses as res
import git_portfolio.use_cases.gh_close_issue as ghci

REPO = "org/reponame"
REPO2 = "org/reponame2"
REQUEST_ISSUES = il.build_list_request(filters={
    "state__eq": "open",
    "title__contains": "title"
})


@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("", "mytoken", [REPO, REPO2])
    return mock


@pytest.fixture
def mock_github_service(mocker: MockerFixture) -> MockerFixture:
    """Fixture for mocking GithubService."""
    mock = mocker.patch("git_portfolio.github_service.GithubService",
                        autospec=True)
예제 #11
0
def test_build_list_request_without_parameters() -> None:
    """It returns valid request with no filters."""
    request = build_list_request()

    assert request.filters is None
    assert bool(request) is True
예제 #12
0
def test_build_list_request_with_empty_filters() -> None:
    """It returns valid request with no filters."""
    request = build_list_request({})

    assert request.filters == {}
    assert bool(request) is True