Related to https://github.com/grafana/oncall/issues/96 --------- Co-authored-by: Ravishankar <ravishankar.gnanaprakasam@gmail.com>
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
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
|