def main(args): jira = JiraProxy(REG_USER_CONFIG) if not jira: print("Unable to obtain a JiraProxy instance for the given configuration") sys.exit(1) try: issues = jira.getIssuesWithJql(SIMPLE_PROJECT_QUERY) list_issues(issues) except Exception as exc: problem = exc.args[0] print(f'Error while attempting to retrieve Jira issues: {problem}') sys.exit(2) print("-" * 80) try: issues = jira.getIssuesWithJql(PROJECT_AND_TYPE_QUERY) list_issues(issues) except Exception as exc: problem = exc.args[0] print(f'Error while attempting to retrieve Jira issues: {problem}') sys.exit(3)
def test_query_specifying_for_field_not_having_null_value(): """ will return issues using jql when a field is specified as not having a null value """ jp = JiraProxy(GOOD_VANILLA_SERVER_DEV_USER_CONFIG) jql = f'{proj1} AND Component/s != "blue + gold" AND status != Reopened' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0
def test_query_using_components_with_percent_symbol_in_value(): """ will return issues using jql that for Component/s that use % in their name """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) jql = f'{proj1} AND Component/s = "machine % calc" ' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "machine % calc" in jira_issues[0]["Component/s"]
def test_query_using_display_name_for_components(): """ will return issues using jql that uses the display name for Component/s """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) jql = f'{proj1} AND issuetype = Story AND Component/s = "Front End" ' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "Front End" in jira_issues[0]["Component/s"]
def test_query_using_display_name_for_fix_versions(): """ will return issues using jql that uses the display name for Fix Version/s """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) jql = f'{proj1} AND issuetype = Story AND Fix Version/s = peach' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "peach" in set(jira_issues[0]["Fix Version/s"])
def test_simple_query_with_multiple_items(): """ will return an Array of JiraIssue objects from a getIssuesWithJql call """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) jql = f'{proj1} AND issuetype = Story' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) >= 5 assert jira_issues[0].__class__ == JiraIssue
def test_query_specifying_for_field_whose_value_is_null(): """ query using jql for issues having no value in a specific field """ jp = JiraProxy(GOOD_VANILLA_SERVER_DEV_USER_CONFIG) #jql = f'{proj1} AND status != Closed AND assignee is null' jql = f'{proj1} AND status != Done AND Resolution is null' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0
def test_query_using_components_with_plus_symbol_in_value(): """ it 'will return issues using jql that for Component/s that use + in their name' do """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) jql = f'{proj1} AND Component/s = "blue + gold" ' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "blue + gold" in jira_issues[0]["Component/s"]
def disable_test_query_using_components_with_hash_symbol_in_value(): """ it 'will return issues using jql that for Component/s that use # in their name' do NB: '#' is a reserved character in Jira JQL. You cannot effectively escape it in Jira in Jira 8. """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) #jql = f'{proj1} AND Component/s = "hash \\#1"' jql = f'{proj1} AND Component/s ~ "hash"' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "hash #1" in jira_issues[0]["Component/s"]
def test_query_using_components_with_question_mark_in_value(): """ will return issues using jql that for Component/s that use ? in their name """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) doof_data = { 'Summary': 'Steepify glide path to oil dump', 'components': 'Tallest?' } issue_key = jp.createIssue(PROJECT_KEY_1, 'Bug', doof_data) jql = f'{proj1} AND Component/s = "Tallest?" ' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "Tallest?" in jira_issues[0]["Component/s"] jp.deleteIssue(issue_key)
def test_query_using_components_with_ampersand_in_value(): """ will return issues using jql that for Component/s that use & in their name """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) doof_data = { 'Summary': 'Morti and Rekso went bogging', 'components': 'Sun & Moon' } issue_key = jp.createIssue(PROJECT_KEY_1, 'Bug', doof_data) jql = f'{proj1} AND Component/s = "Sun & Moon" ' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 assert "Sun & Moon" in jira_issues[0]["Component/s"] jp.deleteIssue(issue_key)
def test_query_using_display_name_for_due_date(): """ will return issues using jql that uses the display name for Due Date """ jp = JiraProxy(GOOD_VANILLA_SERVER_CONFIG) doof_data = { 'Summary': 'Surreptitious Invoicing Scam', 'Due Date': '2021-12-01 09:37' } issue_key = jp.createIssue(PROJECT_KEY_1, 'Story', doof_data) jql = f'{proj1} AND issuetype = Story AND Due Date < now()' jira_issues = jp.getIssuesWithJql(jql) assert len(jira_issues) > 0 jp.deleteIssue(issue_key)