import unittest from unittest.mock import patch from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from app.db import mock_seed as mock_seed_module from app.db.mock_database import MockBase from app.db.mock_models import RentalVehicle, Vehicle class RentalSeedTests(unittest.TestCase): def _build_session_local(self): engine = create_engine("sqlite:///:memory:") SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) MockBase.metadata.create_all(bind=engine) self.addCleanup(engine.dispose) return SessionLocal def test_seed_mock_data_creates_independent_sales_and_rental_fleets(self): SessionLocal = self._build_session_local() with patch("app.db.mock_seed.SessionMockLocal", SessionLocal), patch.object( mock_seed_module.settings, "mock_seed_enabled", True, ): mock_seed_module.seed_mock_data() db = SessionLocal() try: self.assertEqual(db.query(Vehicle).count(), mock_seed_module.TARGET_VEHICLE_COUNT) self.assertEqual(db.query(RentalVehicle).count(), len(mock_seed_module.RENTAL_FLEET)) self.assertGreater( db.query(RentalVehicle).filter(RentalVehicle.status == "disponivel").count(), 0, ) self.assertGreater( db.query(RentalVehicle).filter(RentalVehicle.status == "alugado").count(), 0, ) finally: db.close()