Пример #1
0
def create_issue_set(
    jira: Jira,
    issue_template: Optional[IssueTemplate],
    open_in_browser: bool,
    issue_set: List[IssueFieldsT],
) -> None:
    """Создание набора Issue из yaml-файла ISSUE_SET_FILE"""
    if issue_template is not None:
        for index, issue_fields in enumerate(issue_set):
            issue_set[index] = issue_template.apply_template(
                issue_fields=issue_fields)

    issues = jira.create_issue_set(issue_set=issue_set, )

    for issue in issues:
        if isinstance(issue, SuperIssue):
            click.echo(
                f"Created super-issue: {jira.server}/browse/{issue.key}")
            for sub_issue in issue.sub_issues:
                click.echo(
                    f"    Created sub-issue: {jira.server}/browse/{sub_issue.key}"
                )
                if open_in_browser:
                    webbrowser.open_new_tab(sub_issue.link)

        else:
            click.echo(f"Created issue: {jira.server}/browse/{issue.key}")
            if open_in_browser:
                webbrowser.open_new_tab(issue.link)
def test_create_issue_set(JIRA_MOCK):
    jira_mock = JIRA_MOCK.return_value

    sub_issue = mock.MagicMock(
        fields=mock.MagicMock(summary="Test sub-issue"),
        key="LOL-2",
    )

    super_issue = mock.MagicMock(
        fields=mock.MagicMock(summary="Test issue"),
        key="LOL-1",
    )

    jira_mock.create_issue.side_effect = [super_issue, sub_issue]

    jira_wrapper = Jira(server="http://lol.wut", auth=("lol", "wut"))

    result = jira_wrapper.create_issue_set(issue_set=[{
        "summary":
        "Test issue",
        "issuetype":
        "Story",
        "description":
        "Test description",
        "jtl_sub_issues": [{
            "summary": "Test sub-issue",
            "issuetype": "Task",
        }],
    }], )

    assert len(result) == 1

    result_super_issue = result[0]
    assert isinstance(result_super_issue, SuperIssue)
    assert result_super_issue.key == "LOL-1"
    assert result_super_issue.summary == "Test issue"
    assert len(result_super_issue.sub_issues) == 1

    result_sub_issue = result_super_issue.sub_issues[0]

    assert isinstance(result_sub_issue, SubIssue)
    assert result_sub_issue.key == "LOL-2"
    assert result_sub_issue.summary == "Test sub-issue"

    assert jira_mock.create_issue.call_count == 2