healthchecks/hc/api/tests/test_flip_model.py
Pēteris Caune 9a0888aacd
Update sendalerts to log per-notification send times
To send notifications, sendalerts calls Flip.send_alerts().
I updated Flip.send_alerts() to be a generator, and to yield
a (channel, error, send_time_in_seconds) triple per sent
notification.
2021-01-15 15:15:00 +02:00

56 lines
1.7 KiB
Python

from unittest.mock import patch
from django.utils.timezone import now
from hc.api.models import Channel, Check, Flip
from hc.test import BaseTestCase
class FlipModelTestCase(BaseTestCase):
def setUp(self):
super().setUp()
self.check = Check.objects.create(project=self.project)
self.channel = Channel.objects.create(project=self.project, kind="email")
self.channel.checks.add(self.check)
self.flip = Flip(owner=self.check)
self.flip.created = now()
self.flip.old_status = "up"
self.flip.new_status = "down"
@patch("hc.api.models.Channel.notify")
def test_send_alerts_works(self, mock_notify):
mock_notify.return_value = ""
results = list(self.flip.send_alerts())
self.assertEqual(len(results), 1)
ch, error, send_time = results[0]
self.assertEqual(ch, self.channel)
self.assertEqual(error, "")
@patch("hc.api.models.Channel.notify")
def test_send_alerts_handles_error(self, mock_notify):
mock_notify.return_value = "something went wrong"
results = list(self.flip.send_alerts())
self.assertEqual(len(results), 1)
ch, error, send_time = results[0]
self.assertEqual(error, "something went wrong")
@patch("hc.api.models.Channel.notify")
def test_send_alerts_handles_noop(self, mock_notify):
mock_notify.return_value = "no-op"
results = list(self.flip.send_alerts())
self.assertEqual(results, [])
@patch("hc.api.models.Channel.notify")
def test_send_alerts_handles_new_up_transition(self, mock_notify):
self.flip.old_status = "new"
self.flip.new_status = "up"
results = list(self.flip.send_alerts())
self.assertEqual(results, [])