Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/sentry/incidents/endpoints/serializers/alert_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,9 @@ def get_attrs(

serialized_alert_rules = serialize(alert_rules, user=user)
serialized_alert_rule_map_by_id = {
serialized_alert["id"]: serialized_alert for serialized_alert in serialized_alert_rules
serialized_alert["id"]: serialized_alert
for serialized_alert in serialized_alert_rules
if serialized_alert
}

serialized_issue_rules = serialize(
Expand All @@ -386,7 +388,9 @@ def get_attrs(
serializer=RuleSerializer(expand=self.expand),
)
serialized_issue_rule_map_by_id = {
serialized_rule["id"]: serialized_rule for serialized_rule in serialized_issue_rules
serialized_rule["id"]: serialized_rule
for serialized_rule in serialized_issue_rules
if serialized_rule
}

uptime_detectors = [
Expand Down
25 changes: 25 additions & 0 deletions tests/sentry/incidents/endpoints/serializers/test_alert_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,31 @@ def test_combined_serializer(self) -> None:
serialized_uptime_monitor["type"] = "uptime"
assert result[3] == serialized_uptime_monitor

@patch("sentry.api.serializers.models.rule.RuleSerializer.serialize")
@patch("sentry.api.serializers.base.logger")
def test_combined_serializer_failure(self, mock_logger, mock_serialize: MagicMock) -> None:
mock_serialize.side_effect = Exception

projects = [self.project, self.create_project()]
alert_rule = self.create_alert_rule(projects=projects)
issue_rule = self.create_issue_alert_rule(
data={
"project": self.project,
"name": "Issue Rule Test",
"conditions": [],
"actions": [],
"actionMatch": "all",
}
)
result = serialize(
[alert_rule, issue_rule],
serializer=CombinedRuleSerializer(),
)
assert mock_logger.exception.call_count == 1
self.assert_alert_rule_serialized(alert_rule, result[0])
# we have limited data here because of the exception
assert result[1] == {"type": "rule"}

def test_alert_snoozed(self) -> None:
projects = [self.project, self.create_project()]
alert_rule = self.create_alert_rule(projects=projects)
Expand Down
Loading