45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""Аудит 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)
|