"""Аудит lab и seed import норм.""" from __future__ import annotations import unittest from pathlib import Path from app import create_app, db from app.lab.commands.audit_lab_data import audit_lab_data from app.lab.commands.import_seed import import_norm_profiles from app.lab.models import LabAnimalProfile, LabProfileNorm from app.lab.seed_paths import norms_dir from app.services.setup_state import mark_setup_complete from tests.helpers.zootech_test_helpers import ZootechTestConfig _TAB = norms_dir() class LabDataAuditTests(unittest.TestCase): def setUp(self) -> None: self.app = create_app(ZootechTestConfig) self.ctx = self.app.app_context() self.ctx.push() db.create_all() mark_setup_complete(self.app) def tearDown(self) -> None: db.session.remove() db.drop_all() self.ctx.pop() def test_audit_empty_db(self) -> None: report = audit_lab_data() self.assertIsNotNone(report) def test_import_norm_profiles_beef(self) -> None: if not (_TAB / "Нормы КРС.csv").is_file(): self.skipTest("seed norms CSV missing") stats = import_norm_profiles(csv_dir=_TAB, replace_reference=True) self.assertGreater(stats.profiles_created + stats.profiles_updated, 0) profile = LabAnimalProfile.query.filter_by(profile_key="norm_beef_0001").first() self.assertIsNotNone(profile) self.assertGreater(LabProfileNorm.query.count(), 0) self.assertGreater(LabProfileNorm.query.count(), 100)