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, [])
|