redash/tests/tasks/test_alerts.py
2017-02-18 12:30:02 +02:00

35 lines
1.3 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)
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)