201 előtti mentés
This commit is contained in:
120
test_draft_vehicle.py
Normal file
120
test_draft_vehicle.py
Normal file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify the 2-step asset creation flow.
|
||||
Tests that draft vehicles can be created without VIN.
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Add backend to path
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||||
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from app.db.session import get_db
|
||||
from app.services.asset_service import AssetService
|
||||
from app.models.vehicle.asset import Asset
|
||||
from app.core.config import settings
|
||||
|
||||
async def test_draft_vehicle_creation():
|
||||
"""Test creating a draft vehicle without VIN"""
|
||||
print("🧪 Testing 2-step asset creation flow...")
|
||||
|
||||
# Create async engine
|
||||
engine = create_async_engine(str(settings.SQLALCHEMY_DATABASE_URI))
|
||||
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
|
||||
|
||||
async with async_session() as db:
|
||||
try:
|
||||
# Test 1: Create draft vehicle without VIN
|
||||
print("1. Testing draft vehicle creation (no VIN)...")
|
||||
draft_vehicle = await AssetService.create_or_claim_vehicle(
|
||||
db=db,
|
||||
user_id=1, # Test user ID
|
||||
org_id=1, # Test org ID
|
||||
vin=None, # No VIN for draft
|
||||
license_plate="DRAFT-001",
|
||||
catalog_id=None
|
||||
)
|
||||
|
||||
print(f" ✅ Draft vehicle created with ID: {draft_vehicle.id}")
|
||||
print(f" Status: {draft_vehicle.status}")
|
||||
print(f" VIN: {draft_vehicle.vin}")
|
||||
|
||||
if draft_vehicle.status != "draft":
|
||||
print(f" ❌ Expected status 'draft', got '{draft_vehicle.status}'")
|
||||
return False
|
||||
|
||||
if draft_vehicle.vin is not None:
|
||||
print(f" ❌ Expected VIN to be None, got '{draft_vehicle.vin}'")
|
||||
return False
|
||||
|
||||
# Test 2: Create active vehicle with VIN
|
||||
print("\n2. Testing active vehicle creation (with VIN)...")
|
||||
active_vehicle = await AssetService.create_or_claim_vehicle(
|
||||
db=db,
|
||||
user_id=1,
|
||||
org_id=1,
|
||||
vin="WBA12345678901234", # Valid VIN
|
||||
license_plate="ACTIVE-001",
|
||||
catalog_id=None
|
||||
)
|
||||
|
||||
print(f" ✅ Active vehicle created with ID: {active_vehicle.id}")
|
||||
print(f" Status: {active_vehicle.status}")
|
||||
print(f" VIN: {active_vehicle.vin}")
|
||||
|
||||
if active_vehicle.status != "active":
|
||||
print(f" ❌ Expected status 'active', got '{active_vehicle.status}'")
|
||||
return False
|
||||
|
||||
if active_vehicle.vin != "WBA12345678901234":
|
||||
print(f" ❌ Expected VIN 'WBA12345678901234', got '{active_vehicle.vin}'")
|
||||
return False
|
||||
|
||||
# Test 3: Create draft vehicle with draft=True parameter
|
||||
print("\n3. Testing draft vehicle with explicit draft=True...")
|
||||
explicit_draft = await AssetService.create_or_claim_vehicle(
|
||||
db=db,
|
||||
user_id=1,
|
||||
org_id=1,
|
||||
vin="WBA99999999999999", # Has VIN but draft=True
|
||||
license_plate="DRAFT-002",
|
||||
catalog_id=None,
|
||||
draft=True
|
||||
)
|
||||
|
||||
print(f" ✅ Explicit draft vehicle created with ID: {explicit_draft.id}")
|
||||
print(f" Status: {explicit_draft.status}")
|
||||
print(f" VIN: {explicit_draft.vin}")
|
||||
|
||||
if explicit_draft.status != "draft":
|
||||
print(f" ❌ Expected status 'draft', got '{explicit_draft.status}'")
|
||||
return False
|
||||
|
||||
# VIN should still be stored even for draft
|
||||
if explicit_draft.vin != "WBA99999999999999":
|
||||
print(f" ❌ Expected VIN 'WBA99999999999999', got '{explicit_draft.vin}'")
|
||||
return False
|
||||
|
||||
print("\n🎉 All tests passed! 2-step asset creation flow is working correctly.")
|
||||
print(" - Draft vehicles can be created without VIN")
|
||||
print(" - Draft vehicles have status='draft'")
|
||||
print(" - Active vehicles have status='active'")
|
||||
print(" - Explicit draft=True overrides VIN presence")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Test failed with error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
finally:
|
||||
await db.commit()
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Run the test
|
||||
success = asyncio.run(test_draft_vehicle_creation())
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user