Exemplo n.º 1
0
def domain_issues() -> List[i.Issue]:
    """Issues fixture."""
    issue_1 = i.Issue(
        0,
        "my title",
        "my body",
        {"testing", "refactor"},
    )
    issue_2 = i.Issue(
        1,
        "my title 2",
        "my body2",
        set(),
    )
    return [issue_1, issue_2]
Exemplo n.º 2
0
    def create_issues(github_selected_repos: List[str]) -> i.Issue:
        """Prompt questions to create issues."""
        questions = [
            inquirer.Text(
                "title",
                message="Write an issue title",
                validate=val.not_empty_validation,
            ),
            inquirer.Text("body", message="Write an issue body [optional]"),
            inquirer.Text(
                "labels", message="Write issue labels [optional, separated by comma]"
            ),
            inquirer.Confirm(
                "correct",
                message=(
                    "Confirm creation of issue for the project(s) "
                    f"{github_selected_repos}. Continue?"
                ),
                default=False,
            ),
        ]
        correct = False
        while not correct:
            answers = inquirer.prompt(questions)
            correct = answers["correct"]

        labels = (
            set(label.strip() for label in answers["labels"].split(","))
            if answers["labels"]
            else set()
        )
        return i.Issue(answers["title"], answers["body"], labels)
Exemplo n.º 3
0
def domain_issues() -> List[i.Issue]:
    """Issues fixture."""
    issues = [
        i.Issue(
            0,
            "my issue title",
            "my issue body",
            {"testing", "refactor"},
        ),
        i.Issue(2, "also doesnt match title", "body2", set()),
        i.Issue(4, "doesnt match title", "body4", {"dontinherit"}),
        i.Issue(3, "issue title", "body3", set()),
        i.Issue(5, "pr match issue title", "body5",
                {"enhancement", "testing"}),
    ]
    return issues
Exemplo n.º 4
0
def domain_issue() -> i.Issue:
    """Issue fixture."""
    issue = i.Issue(
        "my title",
        "my body",
        {"testing", "refactor"},
    )
    return issue
Exemplo n.º 5
0
def test_issue_model_init() -> None:
    """Verify model initialization."""
    title = "issue title"
    body = "body description"
    labels = {"testing"}
    test_issue = i.Issue(title, body, labels)

    assert test_issue.title == title
    assert test_issue.body == body
    assert test_issue.labels == labels
Exemplo n.º 6
0
def test_create_issues_no_labels(mock_inquirer_prompt: MockerFixture) -> None:
    """It returns issue."""
    mock_inquirer_prompt.return_value = {
        "title": "my title",
        "labels": "",
        "body": "my body",
        "correct": True,
    }
    result = p.InquirerPrompter.create_issues(["staticdev/omg"])
    expected = i.Issue("my title", "my body", set())

    assert result == expected
Exemplo n.º 7
0
def test_create_issues(mock_inquirer_prompt: MockerFixture) -> None:
    """It returns issue."""
    mock_inquirer_prompt.return_value = {
        "title": "my title",
        "labels": "testing,refactor",
        "body": "my body",
        "correct": True,
    }
    result = p.InquirerPrompter.create_issues([REPO])
    expected = i.Issue(0, "my title", "my body", {"testing", "refactor"})

    assert result == expected
Exemplo n.º 8
0
    def list_issues_from_repo(
        self,
        github_repo: str,
        request: Union[il.IssueListValidRequest, il.IssueListInvalidRequest],
    ) -> List[i.Issue]:
        """Return list of issues from one repository."""
        if isinstance(request, il.IssueListValidRequest):
            repo = self._get_repo(github_repo)

            domain_issues = []
            if not request.filters:
                issues = list(repo.issues())
                for issue in issues:
                    labels = set(label.name for label in issue.labels())
                    domain_issues.append(
                        i.Issue(issue.number, issue.title, issue.body, labels)
                    )
                return issues

            obj = request.filters.get("obj__eq")
            state = request.filters.get("state__eq")
            title_query = request.filters.get("title__contains")
            issues = list(repo.issues(state=state))

            if obj == "issue":
                issues = [issue for issue in issues if issue.pull_request_urls is None]
            elif obj == "pull request":
                issues = [issue for issue in issues if issue.pull_request_urls]

            if title_query:
                issues = [issue for issue in issues if title_query in issue.title]

            for issue in issues:
                labels = set(label.name for label in issue.labels())
                domain_issues.append(
                    i.Issue(issue.number, issue.title, issue.body, labels)
                )

            return domain_issues
        return []