"""Helpers for lab module tests.""" from __future__ import annotations import json from pathlib import Path from app import db from app.lab.services.component_nutrients import upsert_from_api_dict from app.models import Component from app.models.base import default_uuid FIXTURES_DIR = Path(__file__).resolve().parent.parent / "fixtures" / "lab" def load_fixture(name: str) -> list[dict]: path = FIXTURES_DIR / name return json.loads(path.read_text(encoding="utf-8")) def make_component( *, name: str = "Ячмень", external_no: int | None = 1001, dry_matter: float = 86.0, nutrients: dict | None = None, ) -> Component: comp = Component( id=default_uuid(), name=name, type="Зерновые", dry_matter=dry_matter, protein=10.0, energy=12.0, price=15.0, external_no=external_no, ) db.session.add(comp) db.session.flush() upsert_from_api_dict(comp.id, nutrients or {"Сыр. Протеин": 115}) db.session.flush() return comp