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)
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
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)
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})"
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
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)
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', )
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
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
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
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)
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