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