@@ -3109,15 +3109,15 @@ def test_triage_signals_event_count_less_than_10_with_cache(
31093109 return_value = True ,
31103110 )
31113111 @patch (
3112- "sentry.seer.autofix.utils.get_autofix_repos_from_project_code_mappings " ,
3113- return_value = [{ "name" : "test-repo" }] ,
3112+ "sentry.seer.autofix.utils.has_project_connected_repos " ,
3113+ return_value = True ,
31143114 )
31153115 @patch ("sentry.tasks.autofix.run_automation_only_task.delay" )
31163116 @with_feature (
31173117 {"organizations:gen-ai-features" : True , "organizations:triage-signals-v0-org" : True }
31183118 )
31193119 def test_triage_signals_event_count_gte_10_with_cache (
3120- self , mock_run_automation , mock_get_repos , mock_get_seer_org_acknowledgement
3120+ self , mock_run_automation , mock_has_repos , mock_get_seer_org_acknowledgement
31213121 ):
31223122 """Test that with event count >= 10 and cached summary exists, we run automation directly."""
31233123 self .project .update_option ("sentry:seer_scanner_automation" , True )
@@ -3162,8 +3162,8 @@ def mock_buffer_get(model, columns, filters):
31623162 return_value = True ,
31633163 )
31643164 @patch (
3165- "sentry.seer.autofix.utils.get_autofix_repos_from_project_code_mappings " ,
3166- return_value = [{ "name" : "test-repo" }] ,
3165+ "sentry.seer.autofix.utils.has_project_connected_repos " ,
3166+ return_value = True ,
31673167 )
31683168 @patch ("sentry.tasks.autofix.generate_summary_and_run_automation.delay" )
31693169 @with_feature (
@@ -3172,7 +3172,7 @@ def mock_buffer_get(model, columns, filters):
31723172 def test_triage_signals_event_count_gte_10_no_cache (
31733173 self ,
31743174 mock_generate_summary_and_run_automation ,
3175- mock_get_repos ,
3175+ mock_has_repos ,
31763176 mock_get_seer_org_acknowledgement ,
31773177 ):
31783178 """Test that with event count >= 10 and no cached summary, we generate summary + run automation."""
@@ -3207,6 +3207,55 @@ def mock_buffer_get(model, columns, filters):
32073207 # Should call generate_summary_and_run_automation to generate summary + run automation
32083208 mock_generate_summary_and_run_automation .assert_called_once_with (group .id )
32093209
3210+ @patch (
3211+ "sentry.seer.seer_setup.get_seer_org_acknowledgement_for_scanner" ,
3212+ return_value = True ,
3213+ )
3214+ @patch (
3215+ "sentry.seer.autofix.utils.has_project_connected_repos" ,
3216+ return_value = False ,
3217+ )
3218+ @patch ("sentry.tasks.autofix.generate_summary_and_run_automation.delay" )
3219+ @with_feature (
3220+ {"organizations:gen-ai-features" : True , "organizations:triage-signals-v0-org" : True }
3221+ )
3222+ def test_triage_signals_event_count_gte_10_skips_without_connected_repos (
3223+ self ,
3224+ mock_generate_summary_and_run_automation ,
3225+ mock_has_repos ,
3226+ mock_get_seer_org_acknowledgement ,
3227+ ):
3228+ """Test that with event count >= 10 but no connected repos, we skip automation."""
3229+ self .project .update_option ("sentry:seer_scanner_automation" , True )
3230+ self .project .update_option ("sentry:autofix_automation_tuning" , "always" )
3231+ event = self .create_event (
3232+ data = {"message" : "testing" },
3233+ project_id = self .project .id ,
3234+ )
3235+
3236+ # Update group times_seen to simulate >= 10 events
3237+ group = event .group
3238+ group .times_seen = 1
3239+ group .save ()
3240+ event .group .times_seen = 1
3241+
3242+ # Mock buffer backend to return pending increments
3243+ from sentry import buffer
3244+
3245+ def mock_buffer_get (model , columns , filters ):
3246+ return {"times_seen" : 9 }
3247+
3248+ with patch .object (buffer .backend , "get" , side_effect = mock_buffer_get ):
3249+ self .call_post_process_group (
3250+ is_new = False ,
3251+ is_regression = False ,
3252+ is_new_group_environment = False ,
3253+ event = event ,
3254+ )
3255+
3256+ # Should not call automation since no connected repos
3257+ mock_generate_summary_and_run_automation .assert_not_called ()
3258+
32103259 @patch (
32113260 "sentry.seer.seer_setup.get_seer_org_acknowledgement_for_scanner" ,
32123261 return_value = True ,
0 commit comments