@@ -287,55 +287,78 @@ def test_get_existing_newstyle(self, mock_client, mock_get_query, mock_filter):
287287 mock_issue_3 .fields = MagicMock ()
288288 mock_issue_3 .fields .updated = "2025-11-30T00:00:00.0+0000"
289289
290+ def _q (keys ):
291+ if not keys :
292+ return (), None
293+ return keys , f"key in ({ ',' .join (keys )} )"
294+
290295 scenarios = (
291296 {
292- "scenario" : "_get_existing_jira_issue_query returns None " ,
293- "jira_results " : None ,
297+ "scenario" : "_get_existing_jira_issue_query returns no keys " ,
298+ "query_return " : _q (()) ,
294299 "search_issues" : None ,
295300 "filter_results" : None ,
296301 "expected" : None ,
302+ "issue_side_effect" : None ,
297303 },
298304 {
299- "scenario" : "Jira search returns no items" ,
300- "jira_results " : "mock issue key query string" ,
305+ "scenario" : "Jira search returns no items, direct fetch fails " ,
306+ "query_return " : _q (( "MOCK-1" ,)) ,
301307 "search_issues" : ResultList [JIssue ](()),
302308 "filter_results" : None ,
303309 "expected" : None ,
310+ "issue_side_effect" : JIRAError (),
311+ },
312+ {
313+ "scenario" : "Jira search returns no items, direct fetch succeeds" ,
314+ "query_return" : _q (("MOCK-1" ,)),
315+ "search_issues" : ResultList [JIssue ](()),
316+ "filter_results" : None ,
317+ "expected" : mock_issue_1 ,
318+ "issue_side_effect" : None ,
304319 },
305320 {
306321 "scenario" : "Jira search returns one item" ,
307- "jira_results " : "mock issue key query string" ,
322+ "query_return " : _q (( "MOCK-1" ,)) ,
308323 "search_issues" : ResultList [JIssue ]((mock_issue_1 ,)),
309324 "filter_results" : None ,
310325 "expected" : mock_issue_1 ,
326+ "issue_side_effect" : None ,
311327 },
312328 {
313329 "scenario" : "_filter_downstream_issues returns one item" ,
314- "jira_results " : "mock issue key query string" ,
330+ "query_return " : _q (( "MOCK-1" , "MOCK-2" , "MOCK-3" )) ,
315331 "search_issues" : ResultList [JIssue ](
316332 (mock_issue_1 , mock_issue_2 , mock_issue_3 )
317333 ),
318334 "filter_results" : ResultList [JIssue ]((mock_issue_3 ,)),
319335 "expected" : mock_issue_3 ,
336+ "issue_side_effect" : None ,
320337 },
321338 {
322339 "scenario" : "_filter_downstream_issues returns multiple items" ,
323- "jira_results " : "mock issue key query string" ,
340+ "query_return " : _q (( "MOCK-1" , "MOCK-2" , "MOCK-3" )) ,
324341 "search_issues" : ResultList [JIssue ](
325342 (mock_issue_1 , mock_issue_2 , mock_issue_3 )
326343 ),
327344 "filter_results" : ResultList [JIssue ](
328345 (mock_issue_1 , mock_issue_2 , mock_issue_3 )
329346 ),
330347 "expected" : mock_issue_2 , # Most-recently updated
348+ "issue_side_effect" : None ,
331349 },
332350 )
333351
334352 for x in scenarios :
335353 d .jira_cache = d .UrlCache () # Clear the cache
336- mock_get_query .return_value = x ["jira_results " ]
354+ mock_get_query .return_value = x ["query_return " ]
337355 mock_client .search_issues .return_value = x ["search_issues" ]
338356 mock_filter .return_value = x ["filter_results" ]
357+ if x ["issue_side_effect" ] is not None :
358+ mock_client .issue .side_effect = x ["issue_side_effect" ]
359+ else :
360+ mock_client .issue .side_effect = None
361+ mock_client .issue .return_value = mock_issue_1
339362 result = d .get_existing_jira_issue (
340363 client = mock_client , issue = self .mock_issue , config = self .mock_config
341364 )
@@ -349,17 +372,17 @@ def test_get_existing_jira_issue_query(self, mock_snowflake):
349372 {
350373 "jira_cache" : {self .mock_issue .url : "issue_key" },
351374 "snowflake" : (),
352- "expected" : " key in (issue_key)" ,
375+ "expected" : (( "issue_key" ,), " key in (issue_key)") ,
353376 },
354377 {
355378 "jira_cache" : {},
356379 "snowflake" : (),
357- "expected" : None ,
380+ "expected" : ((), None ) ,
358381 },
359382 {
360383 "jira_cache" : {},
361384 "snowflake" : (("issue_key" ,),),
362- "expected" : " key in (issue_key)" ,
385+ "expected" : (( "issue_key" ,), " key in (issue_key)") ,
363386 },
364387 {
365388 "jira_cache" : {},
@@ -368,7 +391,10 @@ def test_get_existing_jira_issue_query(self, mock_snowflake):
368391 ("issue_key_2" ,),
369392 ("issue_key_3" ,),
370393 ),
371- "expected" : "key in (issue_key_1,issue_key_2,issue_key_3)" ,
394+ "expected" : (
395+ ("issue_key_1" , "issue_key_2" , "issue_key_3" ),
396+ "key in (issue_key_1,issue_key_2,issue_key_3)" ,
397+ ),
372398 },
373399 )
374400
@@ -1697,7 +1723,7 @@ def test_check_comments_for_duplicates(self, mock_client):
16971723 # Set up return values
16981724 mock_comment = MagicMock ()
16991725 mock_comment .body = "Marking as duplicate of TEST-1234"
1700- mock_comment .author .name = "mock_user"
1726+ mock_comment .author .displayName = "mock_user"
17011727 mock_client .comments .return_value = [mock_comment ]
17021728 mock_client .issue .return_value = "Successful Call!"
17031729
0 commit comments