|
|
@ -0,0 +1,55 @@ |
|
|
|
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, []) |