Skip to content

Commit f8f3b05

Browse files
GHA-166 add due date to create-jira-release-ticket only when provided (#78)
1 parent 699e452 commit f8f3b05

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

create-jira-release-ticket/create_release_ticket.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,16 @@ def create_release_ticket(jira_client, args, link_to_release_notes):
7272
'project': 'REL',
7373
'issuetype': 'Ask for release',
7474
'summary': f'{args.project_name} {args.version}',
75-
'duedate': args.due_date,
7675
CUSTOM_FIELDS['SHORT_DESCRIPTION']: args.short_description,
7776
CUSTOM_FIELDS['LINK_TO_RELEASE_NOTES']: link_to_release_notes,
7877
CUSTOM_FIELDS['DOCUMENTATION_STATUS']: args.documentation_status,
7978
CUSTOM_FIELDS['RULE_PROPS_CHANGED']: {'value': args.rule_props_changed},
8079
CUSTOM_FIELDS['SONARLINT_CHANGELOG']: args.sonarlint_changelog
8180
}
8281

82+
if args.due_date:
83+
ticket_details['duedate'] = args.due_date
84+
8385
try:
8486
new_ticket = jira_client.create_issue(fields=ticket_details)
8587
return new_ticket

create-jira-release-ticket/test_create_release_ticket.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,43 @@ def test_create_release_ticket_with_all_fields(self):
9393
self.assertEqual(call_args['customfield_11263'], {'value': 'Yes'}) # RULE_PROPS_CHANGED
9494
self.assertEqual(call_args['customfield_11264'], 'Test changelog') # SONARLINT_CHANGELOG
9595

96+
def test_create_release_ticket_without_due_date(self):
97+
"""Test creating release ticket without due date."""
98+
mock_jira = Mock()
99+
mock_ticket = Mock()
100+
mock_ticket.key = 'REL-124'
101+
mock_ticket.permalink.return_value = 'https://jira.com/REL-124'
102+
mock_jira.create_issue.return_value = mock_ticket
103+
104+
# Mock args without due_date
105+
args = Mock()
106+
args.project_name = 'TestProject'
107+
args.version = '1.2.4'
108+
args.short_description = 'Test release'
109+
args.documentation_status = 'Ready'
110+
args.rule_props_changed = 'No'
111+
args.sonarlint_changelog = 'Test changelog'
112+
args.due_date = '' # Empty string
113+
114+
release_url = 'https://jira.com/release/notes'
115+
116+
result = create_release_ticket(mock_jira, args, release_url)
117+
118+
self.assertEqual(result, mock_ticket)
119+
mock_jira.create_issue.assert_called_once()
120+
121+
# Verify the issue creation call does NOT have duedate
122+
call_args = mock_jira.create_issue.call_args[1]['fields']
123+
self.assertEqual(call_args['project'], 'REL')
124+
self.assertEqual(call_args['issuetype'], 'Ask for release')
125+
self.assertEqual(call_args['summary'], 'TestProject 1.2.4')
126+
self.assertNotIn('duedate', call_args) # Verify duedate is not present
127+
self.assertEqual(call_args['customfield_10146'], 'Test release') # SHORT_DESCRIPTION
128+
self.assertEqual(call_args['customfield_10145'], release_url) # LINK_TO_RELEASE_NOTES
129+
self.assertEqual(call_args['customfield_10147'], 'Ready') # DOCUMENTATION_STATUS
130+
self.assertEqual(call_args['customfield_11263'], {'value': 'No'}) # RULE_PROPS_CHANGED
131+
self.assertEqual(call_args['customfield_11264'], 'Test changelog') # SONARLINT_CHANGELOG
132+
96133
# noinspection DuplicatedCode,PyUnusedLocal
97134
@patch('create_release_ticket.eprint')
98135
def test_create_release_ticket_jira_error(self, mock_eprint):
@@ -109,6 +146,7 @@ def test_create_release_ticket_jira_error(self, mock_eprint):
109146
args.documentation_status = 'N/A'
110147
args.rule_props_changed = 'No'
111148
args.sonarlint_changelog = ''
149+
args.due_date = ''
112150

113151
with self.assertRaises(SystemExit) as cm:
114152
create_release_ticket(mock_jira, args, 'https://release.url')

0 commit comments

Comments
 (0)