Example #1
0
    def test_it_returns_no_diff_for_immutable_fields(self, vader_issue):
        initial = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            issue_id='Death-Star-1610',
            updated_at=datetime(2019, 5, 29),
            url='empire.jira.com/browse/Death-Star-1610',
        )

        edited = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            issue_id='EWOKS-1610',
            updated_at=datetime(2019, 7, 29),
            url='ewoksrock.com',
        )
        assert {} == get_updates(initial, edited)
Example #2
0
    def test_two_issues_are_not_equal_if_at_least_one_of_their_attributes_are_not_equal(
            self):
        first_issue = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            updated_at=datetime(2019, 5, 29),
        )

        second_issue = IssueModel(
            project='SOMETHING DIFFERENT',
            issue_type=first_issue.issue_type,
            assignee=first_issue.assignee,
            reporter=first_issue.reporter,
            summary=first_issue.summary,
            description=first_issue.description,
            priority=first_issue.priority,
            updated_at=datetime(2019, 5, 29),
        )

        assert first_issue != second_issue
Example #3
0
    def test_it_returns_the_diff(self, vader_issue):
        initial = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            issue_id='Death-Star-1610',
            updated_at=datetime(2019, 5, 29),
            url='empire.jira.com/browse/Death-Star-1610',
        )

        edited = IssueModel(
            project='Death-Star',
            issue_type='Incident',
            assignee='Veers',
            reporter='Palpatine',
            summary='Your lack of faith',
            description='I find your lack of faith really disturbing.',
            priority='4',
            issue_id='Death-Star-1610',
            updated_at=datetime(2019, 5, 29),
            url='empire.jira.com/browse/Death-Star-1610',
        )
        expected = {
            'description': 'I find your lack of faith really disturbing.',
            # 'priority': '4',
            # 'assignee': 'Veers',
            # 'issuetype': 'Incident',
        }
        assert expected == get_updates(initial, edited)
Example #4
0
def get_printable_issue_brief(issue):
    try:
        issue_model = IssueModel.from_api(issue, None)
    except Exception as e:
        print(e)
        return f"Did not find info for {issue}"
    updated = issue_model.updated_at.date()
    return f"{issue_model.issue_id} | {issue_model.summary} ({updated})"
Example #5
0
def get_printable_issue(issue, conn):
    try:
        epic_key = issue.fields.customfield_10910
        epic_issue = get_issue_by_key(conn, epic_key)
        epic_tag = get_epic_tag(epic_issue)
    except:
        epic_issue = None
        epic_tag = None
    issue_model = IssueModel.from_api(issue, epic_tag)
    return issue_model
Example #6
0
def edit(template):
    editor_name = get_editor()
    temp_file = NamedTemporaryFile(suffix=".jira_issue.yml")
    with open(temp_file.name, "w") as f:
        f.write(template)

    args = [editor_name, "+7;normal 2wdW", temp_file.name]

    proc = subprocess.Popen(args, close_fds=True, stdout=None)
    proc.communicate()
    return IssueModel.from_file(temp_file.name)
Example #7
0
def vader_issue():
    return IssueModel(
        project='Death-Star',
        issue_type='Task',
        assignee='Motti',
        reporter='Vader',
        summary='Your lack of faith',
        description='I find your lack of faith disturbing.',
        priority='3',
        issue_id='Death-Star-1610',
        updated_at=datetime(2019, 5, 29),
        url='empire.jira.com/browse/Death-Star-1610',
    )
Example #8
0
 def test_it_reads_API_object_and_returns_issue_model(self, vader_issue):
     mock_api_issue = MagicMock(key='Death-Star-1610')
     mock_api_issue.fields.project.key = 'Death-Star'
     mock_api_issue.fields.assignee.key = 'Motti'
     mock_api_issue.fields.reporter.key = 'Vader'
     mock_api_issue.fields.summary = 'Your lack of faith'
     mock_api_issue.fields.description = 'I find your lack of faith disturbing.'
     mock_api_issue.fields.priority.name = '3'
     mock_api_issue.fields.issuetype.name = 'Task'
     mock_api_issue.fields.updated = '2019-05-29'
     mock_api_issue.permalink.return_value = 'empire.jira.com/browse/Death-Star-1610'
     issue = IssueModel.from_api(mock_api_issue, None)
     assert issue == vader_issue
Example #9
0
    def test_two_issues_are_equal_if_their_attributes_are_equal(self):
        first_issue = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            updated_at=datetime(2019, 5, 29),
        )

        second_issue = IssueModel(
            project='Death-Star',
            issue_type='Task',
            assignee='Motti',
            reporter='Vader',
            summary='Your lack of faith',
            description='I find your lack of faith disturbing.',
            priority='3',
            updated_at=datetime(2019, 5, 29),
        )

        assert first_issue == second_issue
Example #10
0
 def test_it_has_all_necessary_fields(self):
     issue = IssueModel(
         project='Death-Star',
         issue_type='Task',
         assignee='Motti',
         reporter='Vader',
         summary='Your lack of faith',
         description='I find your lack of faith disturbing.',
         priority='3',
         epic='Customer Experience (DS-100)',
         updated_at=datetime(2019, 5, 29),
     )
     assert issue.project == 'Death-Star'
     assert issue.assignee == 'Motti'
     assert issue.reporter == 'Vader'
     assert issue.summary == 'Your lack of faith'
     assert issue.description == 'I find your lack of faith disturbing.'
     assert issue.priority == '3'
     assert issue.issue_type == 'Task'
     assert issue.issue_id is None
     assert issue.epic == 'Customer Experience (DS-100)'
     assert issue.epic_key == 'DS-100'
     assert issue.updated_at == datetime(2019, 5, 29)
     assert issue.url is None
Example #11
0
def edit_issue(conn, issue_key):
    api_issue = get_issue_by_key(conn, issue_key)
    issue = IssueModel.from_api(api_issue, None)
    edited_issue = edit(str(issue))
    updates = get_updates(issue, edited_issue)
    api_issue.update(**updates)
Example #12
0
 def test_it_reads_yaml_file_and_returns_issue_model(self, vader_issue):
     issue = IssueModel.from_file(PATH_TO_VADER_FILE)
     assert issue == vader_issue