@@ -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