@@ -0,0 +1,60 @@
|
||||
"""Тесты feed_quality.notify (флаги notify_*)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
from app import create_app, db
|
||||
from app.models.feed_alert import FeedAlert
|
||||
from app.services.feed_quality.notify import notify_feed_quality_alerts
|
||||
from app.services.feed_quality.rules import EVENT_OVERLOAD, SEVERITY_ERROR, SEVERITY_WARNING
|
||||
from app.services.feed_quality.settings_store import save_feed_quality_settings
|
||||
from app.models import ZootechNotification
|
||||
from tests.helpers.zootech_test_helpers import ZootechTestConfig
|
||||
|
||||
|
||||
class FeedQualityNotifyTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.app = create_app(ZootechTestConfig)
|
||||
self.ctx = self.app.app_context()
|
||||
self.ctx.push()
|
||||
db.create_all()
|
||||
|
||||
def tearDown(self) -> None:
|
||||
db.session.remove()
|
||||
db.drop_all()
|
||||
self.ctx.pop()
|
||||
|
||||
def _alert(self, *, severity: str) -> FeedAlert:
|
||||
return FeedAlert(
|
||||
id="fq-nt-1",
|
||||
event_type=EVENT_OVERLOAD,
|
||||
severity=severity,
|
||||
loading_report_id="lr-1",
|
||||
recipe_id="r-1",
|
||||
recipe_name="Рейс",
|
||||
component_name="C1",
|
||||
detail="перегруз",
|
||||
created_at=datetime.now(),
|
||||
)
|
||||
|
||||
def test_notify_warning_and_critical_by_default(self) -> None:
|
||||
n1 = notify_feed_quality_alerts([self._alert(severity=SEVERITY_WARNING)])
|
||||
n2 = notify_feed_quality_alerts([self._alert(severity=SEVERITY_ERROR)])
|
||||
self.assertEqual(n1, 1)
|
||||
self.assertEqual(n2, 1)
|
||||
self.assertEqual(db.session.query(ZootechNotification).count(), 2)
|
||||
|
||||
def test_notify_warning_disabled(self) -> None:
|
||||
save_feed_quality_settings({"loading": {"notify_warning": False}})
|
||||
count = notify_feed_quality_alerts([self._alert(severity=SEVERITY_WARNING)])
|
||||
self.assertEqual(count, 0)
|
||||
|
||||
def test_notify_critical_disabled(self) -> None:
|
||||
save_feed_quality_settings({"loading": {"notify_critical": False}})
|
||||
count = notify_feed_quality_alerts([self._alert(severity=SEVERITY_ERROR)])
|
||||
self.assertEqual(count, 0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user