oncall-engine/engine/apps/mattermost/tests/test_alert_rendering.py

49 lines
1.9 KiB
Python
Raw Permalink Normal View History

import pytest
from django.utils import timezone
from apps.mattermost.alert_rendering import MattermostMessageRenderer
@pytest.mark.django_db
@pytest.mark.parametrize(
"expected_button_ids,expected_button_names,color_code,alert_type",
[
(["acknowledge", "resolve"], ["Acknowledge", "Resolve"], "#a30200", "unack"),
(["unacknowledge", "resolve"], ["Unacknowledge", "Resolve"], "#daa038", "ack"),
(["unresolve"], ["Unresolve"], "#2eb886", "resolved"),
],
)
def test_alert_group_message_renderer(
make_organization,
make_alert_receive_channel,
make_alert_group,
make_alert,
expected_button_ids,
expected_button_names,
color_code,
alert_type,
):
organization = make_organization()
alert_receive_channel = make_alert_receive_channel(organization)
if alert_type == "unack":
alert_group = make_alert_group(alert_receive_channel)
make_alert(alert_group=alert_group, raw_request_data=alert_receive_channel.config.example_payload)
elif alert_type == "ack":
alert_group = make_alert_group(alert_receive_channel, acknowledged_at=timezone.now(), acknowledged=True)
make_alert(alert_group=alert_group, raw_request_data=alert_receive_channel.config.example_payload)
elif alert_type == "resolved":
alert_group = make_alert_group(alert_receive_channel, resolved_at=timezone.now(), resolved=True)
make_alert(alert_group=alert_group, raw_request_data=alert_receive_channel.config.example_payload)
message = MattermostMessageRenderer(alert_group=alert_group).render_alert_group_message()
actions = message["props"]["attachments"][0]["actions"]
color = message["props"]["attachments"][0]["color"]
assert color == color_code
ids = [a["id"] for a in actions]
for id in ids:
assert id in expected_button_ids
names = [a["name"] for a in actions]
for name in names:
assert name in expected_button_names