You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
orquestrador/tests/test_rental_seed.py

45 lines
1.5 KiB
Python

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()