33 WorkflowEngineDataConditionSerializer ,
44)
55from sentry .incidents .endpoints .utils import translate_data_condition_type
6- from sentry .incidents .models .alert_rule import (
7- AlertRule ,
8- AlertRuleThresholdType ,
9- AlertRuleTrigger ,
10- AlertRuleTriggerAction ,
11- )
12- from sentry .testutils .cases import TestCase
13- from sentry .testutils .helpers .datetime import freeze_time
6+ from sentry .incidents .models .alert_rule import AlertRule , AlertRuleTrigger , AlertRuleTriggerAction
147from sentry .workflow_engine .migration_helpers .alert_rule import (
158 migrate_alert_rule ,
169 migrate_metric_action ,
1710 migrate_metric_data_conditions ,
1811 migrate_resolve_threshold_data_condition ,
1912)
13+ from tests .sentry .incidents .serializers .test_workflow_engine_base import TestWorklowEngineSerializer
2014
2115
22- @freeze_time ("2018-12-11 03:21:34" )
23- class TestDataConditionSerializer (TestCase ):
16+ class TestDataConditionSerializer (TestWorklowEngineSerializer ):
2417 def setUp (self ) -> None :
25- self .alert_rule = self .create_alert_rule ()
26- self .critical_trigger = self .create_alert_rule_trigger (
27- alert_rule = self .alert_rule , label = "critical"
28- )
29- self .critical_trigger_action = self .create_alert_rule_trigger_action (
30- alert_rule_trigger = self .critical_trigger
31- )
32- self .warning_trigger = self .create_alert_rule_trigger (
33- alert_rule = self .alert_rule , label = "warning"
34- )
35- self .warning_trigger_action = self .create_alert_rule_trigger_action (
36- alert_rule_trigger = self .warning_trigger
37- )
38- _ , _ , _ , self .detector , _ , _ , _ , _ = migrate_alert_rule (self .alert_rule )
39- self .critical_detector_trigger , _ = migrate_metric_data_conditions (self .critical_trigger )
40- self .warning_detector_trigger , _ = migrate_metric_data_conditions (self .warning_trigger )
41- self .critical_action , _ , _ = migrate_metric_action (self .critical_trigger_action )
42- self .warning_action , _ , _ = migrate_metric_action (self .warning_trigger_action )
43- self .resolve_trigger_data_condition = migrate_resolve_threshold_data_condition (
44- self .alert_rule
45- )
46- self .expected_actions = [
47- {
48- "id" : str (self .critical_trigger_action .id ),
49- "alertRuleTriggerId" : str (self .critical_trigger .id ),
50- "type" : "email" ,
51- "targetType" : "user" ,
52- "targetIdentifier" : str (self .user .id ),
53- "inputChannelId" : None ,
54- "integrationId" : None ,
55- "sentryAppId" : None ,
56- "dateCreated" : self .critical_trigger_action .date_added ,
57- "desc" : f"Send a notification to { self .user .email } " ,
58- "priority" : self .critical_action .data .get ("priority" ),
59- },
60- ]
61- self .expected_trigger = {
62- "id" : str (self .critical_trigger .id ),
63- "alertRuleId" : str (self .alert_rule .id ),
64- "label" : "critical" ,
65- "thresholdType" : AlertRuleThresholdType .ABOVE .value ,
66- "alertThreshold" : self .critical_detector_trigger .comparison ,
67- "resolveThreshold" : AlertRuleThresholdType .BELOW ,
68- "dateCreated" : self .critical_trigger .date_added ,
69- "actions" : self .expected_actions ,
70- }
18+ super ().setUp ()
19+ self .add_warning_trigger ()
7120
7221 def create_rule_triggers_and_actions (
7322 self ,
@@ -102,29 +51,15 @@ def test_simple(self) -> None:
10251 self .user ,
10352 WorkflowEngineDataConditionSerializer (),
10453 )
105- assert serialized_data_condition == self .expected_trigger
54+ assert serialized_data_condition == self .expected_triggers [ 0 ]
10655
10756 def test_warning_trigger (self ) -> None :
10857 serialized_data_condition = serialize (
10958 self .warning_detector_trigger ,
11059 self .user ,
11160 WorkflowEngineDataConditionSerializer (),
11261 )
113- expected_actions = self .expected_actions .copy ()
114- expected_actions [0 ]["id" ] = str (self .warning_trigger_action .id )
115- expected_actions [0 ]["alertRuleTriggerId" ] = str (self .warning_trigger .id )
116-
117- expected_trigger = self .expected_trigger .copy ()
118- expected_trigger ["actions" ] = expected_actions
119- expected_trigger ["alertThreshold" ] = translate_data_condition_type (
120- self .detector .config .get ("comparison_delta" ),
121- self .resolve_trigger_data_condition .type ,
122- self .warning_detector_trigger .comparison ,
123- )
124- expected_trigger ["id" ] = str (self .warning_trigger .id )
125- expected_trigger ["alertRuleId" ] = str (self .alert_rule .id )
126- expected_trigger ["label" ] = "warning"
127- assert serialized_data_condition == expected_trigger
62+ assert serialized_data_condition == self .expected_triggers [1 ]
12863
12964 def test_multiple_actions (self ) -> None :
13065 self .critical_trigger_action_2 = self .create_alert_rule_trigger_action (
@@ -136,7 +71,7 @@ def test_multiple_actions(self) -> None:
13671 self .user ,
13772 WorkflowEngineDataConditionSerializer (),
13873 )
139- expected_actions = self .expected_actions .copy ()
74+ expected_actions = self .expected_critical_action .copy ()
14075 actions_2 = {
14176 "id" : str (self .critical_trigger_action_2 .id ),
14277 "alertRuleTriggerId" : str (self .critical_trigger .id ),
@@ -151,7 +86,7 @@ def test_multiple_actions(self) -> None:
15186 "priority" : self .critical_action .data .get ("priority" ),
15287 }
15388 expected_actions .append (actions_2 )
154- expected_trigger = self .expected_trigger .copy ()
89+ expected_trigger = self .expected_triggers [ 0 ] .copy ()
15590 expected_trigger ["actions" ] = expected_actions
15691 assert serialized_data_condition == expected_trigger
15792
@@ -173,11 +108,11 @@ def test_comparison_delta(self) -> None:
173108 self .user ,
174109 WorkflowEngineDataConditionSerializer (),
175110 )
176- expected_actions = self .expected_actions .copy ()
111+ expected_actions = self .expected_critical_action .copy ()
177112 expected_actions [0 ]["id" ] = str (comparison_delta_trigger_action .id )
178113 expected_actions [0 ]["alertRuleTriggerId" ] = str (comparison_delta_trigger .id )
179114
180- expected_trigger = self .expected_trigger .copy ()
115+ expected_trigger = self .expected_triggers [ 0 ] .copy ()
181116 expected_trigger ["actions" ] = expected_actions
182117 expected_trigger ["alertThreshold" ] = translate_data_condition_type (
183118 detector .config .get ("comparison_delta" ),
0 commit comments