Интегрирован wesp в сайт
CI / quality (push) Canceled after 0s

This commit is contained in:
влад
2026-07-17 12:57:18 +03:00
parent 5dfa06ddbe
commit 355c0ef9f1
883 changed files with 194576 additions and 177 deletions
@@ -0,0 +1,108 @@
"""API /api/feed-quality/settings."""
from __future__ import annotations
import unittest
from datetime import datetime
from app import create_app, db
from app.models import LoadingReport, LoadingReportComponent, Recipe
from app.models.feed_quality_settings import FeedQualitySettings
from app.services.feed_quality.evaluator import evaluate_loading_report
from app.services.setup_state import mark_setup_complete
from tests.helpers.zootech_test_helpers import ZootechTestConfig
class FeedQualitySettingsApiTests(unittest.TestCase):
def setUp(self) -> None:
self.app = create_app(ZootechTestConfig)
self.client = self.app.test_client()
self.ctx = self.app.app_context()
self.ctx.push()
db.create_all()
mark_setup_complete(self.app)
self.client.post(
"/api/auth/login",
json={"login": "zootech-test-admin", "password": "zootech-test-secret"},
)
def tearDown(self) -> None:
db.session.remove()
db.drop_all()
self.ctx.pop()
def test_get_settings(self) -> None:
resp = self.client.get("/api/feed-quality/settings")
self.assertEqual(resp.status_code, 200)
body = resp.get_json()
self.assertIn("settings", body)
self.assertIn("defaults", body)
self.assertTrue(body["settings"]["loading"]["enabled"])
def test_put_disables_loading_and_reevaluates(self) -> None:
db.session.add(Recipe(id="set-r1", name="Set рейс", heads_per_trip=1, content_hash=""))
report = LoadingReport(
id="set-lr-1",
recipe_id="set-r1",
recipe_name="Set рейс",
start_time=datetime.now(),
target_mixing_time=60,
actual_mixing_time=60,
total_weight=50.0,
created_by="system",
updated_by="system",
)
db.session.add(report)
db.session.flush()
db.session.add(
LoadingReportComponent(
report_id=report.id,
component_name="C1",
target_weight=50.0,
actual_weight=60.0,
overload=10.0,
loading_order=1,
created_by="system",
updated_by="system",
)
)
db.session.commit()
evaluate_loading_report(report.id, send_notifications=False)
resp = self.client.put(
"/api/feed-quality/settings",
json={"settings": {"loading": {"enabled": False}}},
)
self.assertEqual(resp.status_code, 200)
body = resp.get_json()
self.assertTrue(body.get("saved"))
self.assertFalse(body["settings"]["loading"]["enabled"])
self.assertIn("reevaluatedReports", body)
row = db.session.get(FeedQualitySettings, 1)
self.assertIsNotNone(row)
alerts = self.client.get("/api/feed-quality/alerts")
self.assertEqual(alerts.status_code, 200)
items = alerts.get_json().get("items") or []
self.assertEqual(len(items), 0)
def test_put_persists_to_db(self) -> None:
resp = self.client.put(
"/api/feed-quality/settings",
json={"settings": {"loading": {"warning_pct": 13}}},
)
self.assertEqual(resp.status_code, 200)
row = db.session.get(FeedQualitySettings, 1)
self.assertIsNotNone(row)
get_resp = self.client.get("/api/feed-quality/settings")
self.assertEqual(get_resp.get_json()["settings"]["loading"]["warning_pct"], 13.0)
def test_requires_auth(self) -> None:
self.client.post("/api/auth/logout")
resp = self.client.get("/api/feed-quality/settings")
self.assertEqual(resp.status_code, 401)
if __name__ == "__main__":
unittest.main()