Интегрирован 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
+55
View File
@@ -0,0 +1,55 @@
"""ETL lab: fixtures без PostgreSQL."""
from __future__ import annotations
import json
import unittest
from app import create_app, db
from app.lab.etl.reference_db_import import (
apply_animal_profile_rows,
apply_feed_ingredient_rows,
)
from app.lab.models import LabAnimalProfile, LabProfileNorm
from app.lab.services.component_nutrients import nutrients_api_dict
from app.services.setup_state import mark_setup_complete
from tests.helpers.lab_test_helpers import load_fixture, make_component
from tests.helpers.zootech_test_helpers import ZootechTestConfig
class LabEtlImportTests(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_enrich_component_from_fixture(self) -> None:
comp = make_component()
stats = apply_feed_ingredient_rows(load_fixture("feed_ingredients.json"))
db.session.commit()
db.session.refresh(comp)
self.assertEqual(stats.components_enriched, 1)
nutrients = nutrients_api_dict(comp.id)
self.assertIn("Сыр. Протеин", nutrients)
def test_import_animal_profiles_fixture(self) -> None:
stats = apply_animal_profile_rows(load_fixture("animal_profiles.json"))
db.session.commit()
self.assertEqual(stats.animal_profiles, 1)
profile = LabAnimalProfile.query.get("prof-beef-001")
self.assertIsNotNone(profile)
self.assertEqual(profile.profile_key, "beef_grow_400")
norm = LabProfileNorm.query.filter_by(
profile_id=profile.id, indicator_key="dry_matter"
).first()
self.assertIsNotNone(norm)
self.assertEqual(norm.min_value, 4000)
self.assertEqual(norm.max_value, 5000)