22
33from sentry .grouping .grouptype import ErrorGroupType
44from sentry .incidents .grouptype import MetricIssue
5+ from sentry .types .group import PriorityLevel
56from sentry .utils .registry import NoRegistrationExistsError
67from sentry .workflow_engine .models import Action
78from sentry .workflow_engine .types import WorkflowEventData
8- from tests .sentry .workflow_engine .test_base import BaseWorkflowTest
9+ from tests .sentry .notifications .notification_action .test_metric_alert_registry_handlers import (
10+ MetricAlertHandlerBase ,
11+ )
912
1013
11- class TestNotificationActionHandler (BaseWorkflowTest ):
14+ class TestNotificationActionHandler (MetricAlertHandlerBase ):
1215 def setUp (self ) -> None :
1316 super ().setUp ()
1417 self .project = self .create_project ()
@@ -17,18 +20,6 @@ def setUp(self) -> None:
1720 self .group , self .event , self .group_event = self .create_group_event ()
1821 self .event_data = WorkflowEventData (event = self .group_event , group = self .group )
1922
20- @mock .patch ("sentry.notifications.notification_action.utils.execute_via_issue_alert_handler" )
21- def test_execute_without_group_type (
22- self , mock_execute_via_issue_alert_handler : mock .MagicMock
23- ) -> None :
24- """Test that execute does nothing when detector has no group_type"""
25- self .detector .type = ""
26- self .action .trigger (self .event_data , self .detector )
27-
28- mock_execute_via_issue_alert_handler .assert_called_once_with (
29- self .event_data , self .action , self .detector
30- )
31-
3223 @mock .patch (
3324 "sentry.notifications.notification_action.registry.group_type_notification_registry.get"
3425 )
@@ -40,7 +31,7 @@ def test_execute_error_group_type(self, mock_registry_get: mock.MagicMock) -> No
4031 mock_handler = mock .Mock ()
4132 mock_registry_get .return_value = mock_handler
4233
43- self .action .trigger (self .event_data , self . detector )
34+ self .action .trigger (self .event_data )
4435
4536 mock_registry_get .assert_called_once_with (ErrorGroupType .slug )
4637 mock_handler .handle_workflow_action .assert_called_once_with (
@@ -56,10 +47,25 @@ def test_execute_metric_alert_type(self, mock_registry_get: mock.MagicMock) -> N
5647 self .detector .config = {"threshold_period" : 1 , "detection_type" : "static" }
5748 self .detector .save ()
5849
50+ self .group .type = MetricIssue .type_id
51+ self .group .save ()
52+
53+ group , _ , group_event = self .create_group_event (
54+ group_type_id = MetricIssue .type_id ,
55+ occurrence = self .create_issue_occurrence (
56+ priority = PriorityLevel .HIGH .value ,
57+ level = "error" ,
58+ evidence_data = {
59+ "detector_id" : self .detector .id ,
60+ },
61+ ),
62+ )
63+ self .event_data = WorkflowEventData (event = group_event , group = group )
64+
5965 mock_handler = mock .Mock ()
6066 mock_registry_get .return_value = mock_handler
6167
62- self .action .trigger (self .event_data , self . detector )
68+ self .action .trigger (self .event_data )
6369
6470 mock_registry_get .assert_called_once_with (MetricIssue .slug )
6571 mock_handler .handle_workflow_action .assert_called_once_with (
@@ -72,15 +78,15 @@ def test_execute_metric_alert_type(self, mock_registry_get: mock.MagicMock) -> N
7278 side_effect = NoRegistrationExistsError ,
7379 )
7480 @mock .patch ("sentry.notifications.notification_action.utils.logger" )
75- def test_execute_unknown_group_type (
81+ def test_execute_unknown_detector (
7682 self ,
7783 mock_logger : mock .MagicMock ,
7884 mock_registry_get : mock .MagicMock ,
7985 mock_execute_via_issue_alert_handler : mock .MagicMock ,
8086 ) -> None :
81- """Test that execute does nothing when detector has no group_type """
87+ """Test that execute does nothing when we can't find the detector """
8288
83- self .action .trigger (self .event_data , self . detector )
89+ self .action .trigger (self .event_data )
8490
8591 mock_logger .warning .assert_called_once_with (
8692 "group_type_notification_registry.get.NoRegistrationExistsError" ,
0 commit comments