Files
redash/tests/tasks/test_alerts.py
Arik Fraimovich 2dff8b9a00 Black support for the Python codebase (#4297)
* Apply black formatting

* Add auto formatting when committing to master

* Update CONTRIBUTING.md re. Black & Prettier
2019-12-11 13:54:29 +02:00

55 lines
1.8 KiB
Python

from tests import BaseTestCase
from mock import MagicMock, ANY
import redash.tasks.alerts
from redash.tasks.alerts import (
check_alerts_for_query,
notify_subscriptions,
should_notify,
)
from redash.models import Alert
class TestCheckAlertsForQuery(BaseTestCase):
def test_notifies_subscribers_when_should(self):
redash.tasks.alerts.notify_subscriptions = MagicMock()
Alert.evaluate = MagicMock(return_value=Alert.TRIGGERED_STATE)
alert = self.factory.create_alert()
check_alerts_for_query(alert.query_id)
self.assertTrue(redash.tasks.alerts.notify_subscriptions.called)
def test_doesnt_notify_when_nothing_changed(self):
redash.tasks.alerts.notify_subscriptions = MagicMock()
Alert.evaluate = MagicMock(return_value=Alert.OK_STATE)
alert = self.factory.create_alert()
check_alerts_for_query(alert.query_id)
self.assertFalse(redash.tasks.alerts.notify_subscriptions.called)
def test_doesnt_notify_when_muted(self):
redash.tasks.alerts.notify_subscriptions = MagicMock()
Alert.evaluate = MagicMock(return_value=Alert.TRIGGERED_STATE)
alert = self.factory.create_alert(options={"muted": True})
check_alerts_for_query(alert.query_id)
self.assertFalse(redash.tasks.alerts.notify_subscriptions.called)
class TestNotifySubscriptions(BaseTestCase):
def test_calls_notify_for_subscribers(self):
subscription = self.factory.create_alert_subscription()
subscription.notify = MagicMock()
notify_subscriptions(subscription.alert, Alert.OK_STATE)
subscription.notify.assert_called_with(
subscription.alert,
subscription.alert.query_rel,
subscription.user,
Alert.OK_STATE,
ANY,
ANY,
)