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.
45 lines
1.5 KiB
Python
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()
|
|
|