52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from django.test import SimpleTestCase
|
|
|
|
from apps.operations.services.insight_service import alert_from_graded
|
|
|
|
|
|
class AlertFromGradedTests(SimpleTestCase):
|
|
def test_empty_analyses_is_unknown(self):
|
|
self.assertEqual(alert_from_graded({}), "unknown")
|
|
self.assertEqual(alert_from_graded({"analyses": {}}), "unknown")
|
|
|
|
def test_ok_maps_to_healthy(self):
|
|
graded = {"analyses": {"fcr": {"status": "ok"}}}
|
|
self.assertEqual(alert_from_graded(graded), "healthy")
|
|
|
|
def test_warning_and_critical_unchanged(self):
|
|
self.assertEqual(
|
|
alert_from_graded({"analyses": {"fcr": {"status": "warning"}}}),
|
|
"warning",
|
|
)
|
|
self.assertEqual(
|
|
alert_from_graded({"analyses": {"mortality": {"status": "critical"}}}),
|
|
"critical",
|
|
)
|
|
|
|
def test_unknown_stays_unknown(self):
|
|
graded = {"analyses": {"bw": {"status": "unknown"}}}
|
|
self.assertEqual(alert_from_graded(graded), "unknown")
|
|
|
|
def test_worst_wins_critical_over_warning_and_healthy(self):
|
|
graded = {
|
|
"analyses": {
|
|
"fcr": {"status": "ok"},
|
|
"mortality": {"status": "warning"},
|
|
"environment": {"status": "critical"},
|
|
}
|
|
}
|
|
self.assertEqual(alert_from_graded(graded), "critical")
|
|
|
|
def test_worst_wins_warning_over_healthy_and_unknown(self):
|
|
graded = {
|
|
"analyses": {
|
|
"fcr": {"status": "ok"},
|
|
"bw": {"status": "unknown"},
|
|
"mortality": {"status": "warning"},
|
|
}
|
|
}
|
|
self.assertEqual(alert_from_graded(graded), "warning")
|
|
|
|
def test_ignores_non_dict_blocks(self):
|
|
graded = {"analyses": {"fcr": "ok", "bw": {"status": "ok"}}}
|
|
self.assertEqual(alert_from_graded(graded), "healthy")
|