@@ -0,0 +1,90 @@
|
||||
"""cleanup_legacy_profiles command."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from app import create_app, db
|
||||
from app.lab.commands.cleanup_legacy_profiles import cleanup_legacy_profiles
|
||||
from app.lab.models import LabAnimalProfile, LabRecipeRation
|
||||
from app.models.base import default_uuid
|
||||
from app.services.setup_state import mark_setup_complete
|
||||
from tests.helpers.zootech_test_helpers import ZootechTestConfig
|
||||
|
||||
|
||||
class CleanupLegacyProfilesTests(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_dry_run_lists_legacy_and_fp(self) -> None:
|
||||
legacy = LabAnimalProfile(
|
||||
id=default_uuid(),
|
||||
profile_key="dairy-1",
|
||||
label="Legacy",
|
||||
ration_type="DAIRY",
|
||||
created_by="test",
|
||||
updated_by="test",
|
||||
)
|
||||
fp = LabAnimalProfile(
|
||||
id=default_uuid(),
|
||||
profile_key="fp_dairy_0001",
|
||||
label="FP",
|
||||
ration_type="DAIRY",
|
||||
created_by="test",
|
||||
updated_by="test",
|
||||
)
|
||||
math = LabAnimalProfile(
|
||||
id=default_uuid(),
|
||||
profile_key="lab_math_dairy_01",
|
||||
label="Math",
|
||||
ration_type="DAIRY",
|
||||
created_by="test",
|
||||
updated_by="test",
|
||||
)
|
||||
from app.models import Recipe
|
||||
|
||||
recipe = Recipe(id=default_uuid(), name="T", heads_per_trip=1, mixing_time=1)
|
||||
db.session.add(recipe)
|
||||
db.session.add_all([legacy, fp, math])
|
||||
db.session.flush()
|
||||
db.session.add(
|
||||
LabRecipeRation(
|
||||
recipe_id=recipe.id,
|
||||
animal_profile_id=legacy.id,
|
||||
created_by="test",
|
||||
updated_by="test",
|
||||
)
|
||||
)
|
||||
db.session.commit()
|
||||
|
||||
report = cleanup_legacy_profiles(dry_run=True)
|
||||
self.assertIn("dairy-1", report.profiles_to_delete)
|
||||
self.assertIn("fp_dairy_0001", report.profiles_to_delete)
|
||||
self.assertNotIn("lab_math_dairy_01", report.profiles_to_delete)
|
||||
self.assertEqual(report.profiles_deleted, 0)
|
||||
|
||||
def test_apply_deletes_legacy(self) -> None:
|
||||
legacy = LabAnimalProfile(
|
||||
id=default_uuid(),
|
||||
profile_key="beef-2",
|
||||
label="Legacy",
|
||||
ration_type="BEEF",
|
||||
created_by="test",
|
||||
updated_by="test",
|
||||
)
|
||||
db.session.add(legacy)
|
||||
db.session.commit()
|
||||
|
||||
report = cleanup_legacy_profiles(dry_run=False)
|
||||
self.assertEqual(report.profiles_deleted, 1)
|
||||
remaining = LabAnimalProfile.query.filter_by(is_deleted=False).count()
|
||||
self.assertEqual(remaining, 0)
|
||||
Reference in New Issue
Block a user