Spaces:
Paused
Paused
| #!/usr/bin/env python3 | |
| """ | |
| Test script demonstrating the barrier size insertion functionality | |
| as requested in the requirements. | |
| This implements: | |
| 1. INSERT into BarrierSizes (id auto-generated, increment by 1) | |
| 2. INSERT into BiddersBarrierSizes using the generated BarrierSizeId | |
| """ | |
| from sqlalchemy.orm import Session | |
| from app.db.session import SessionLocal | |
| from app.db.repositories.bidders_barrier_sizes_repo import BiddersBarrierSizesRepository | |
| def test_barrier_insertion(): | |
| """ | |
| Test the barrier size insertion functionality that mimics: | |
| INSERT INTO BarrierSizes (height,width,length,cableunits,price,isstandard) VALUES (...) | |
| - The Id in BarrierSizes is auto generated, increments by 1 | |
| INSERT INTO BiddersBarrierSizes (id,inventoryid,bidderid,barriersizeid,isstandard) VALUES (...) | |
| - The id from BarrierSizes is stored in BiddersBarrierSizes.BarrierSizeId | |
| - The id field in BiddersBarrierSizes is auto increment | |
| """ | |
| # Get database session | |
| db: Session = SessionLocal() | |
| try: | |
| # Initialize repository | |
| repo = BiddersBarrierSizesRepository(db) | |
| # Test data - example barrier size | |
| test_data = { | |
| "height": 6.0, | |
| "width": 4.0, | |
| "length": 12.0, | |
| "cable_units": 10, | |
| "price": 1500.00, | |
| "is_standard": True, | |
| "inventory_id": 12345, # Optional inventory ID | |
| "bidder_id": 1 # Required bidder ID | |
| } | |
| print("Creating barrier size with bidder association...") | |
| print(f"Input data: {test_data}") | |
| # Call the method that implements the required workflow | |
| result = repo.create_with_sql_like_params(**test_data) | |
| print("\nResults:") | |
| print(f"Barrier Size ID (auto-generated): {result['barrier_size_id']}") | |
| print(f"Bidder Barrier Size ID (auto-generated): {result['bidder_barrier_size_id']}") | |
| print(f"Message: {result['message']}") | |
| # Verify the records were created | |
| from app.db.models.barrier_size import BarrierSizes | |
| from app.db.models.bidders_barrier_sizes import BiddersBarrierSizes | |
| # Check BarrierSizes record | |
| barrier_size = db.query(BarrierSizes).filter( | |
| BarrierSizes.Id == result['barrier_size_id'] | |
| ).first() | |
| print(f"\nCreated BarrierSizes record:") | |
| print(f" Id: {barrier_size.Id} (auto-generated)") | |
| print(f" Height: {barrier_size.Height}") | |
| print(f" Width: {barrier_size.Width}") | |
| print(f" Length: {barrier_size.Lenght}") | |
| print(f" CableUnits: {barrier_size.CableUnits}") | |
| print(f" Price: {barrier_size.Price}") | |
| print(f" IsStandard: {barrier_size.IsStandard}") | |
| # Check BiddersBarrierSizes record | |
| bidder_barrier = db.query(BiddersBarrierSizes).filter( | |
| BiddersBarrierSizes.Id == result['bidder_barrier_size_id'] | |
| ).first() | |
| print(f"\nCreated BiddersBarrierSizes record:") | |
| print(f" Id: {bidder_barrier.Id} (auto-generated)") | |
| print(f" InventoryId: {bidder_barrier.InventoryId}") | |
| print(f" BidderId: {bidder_barrier.BidderId}") | |
| print(f" BarrierSizeId: {bidder_barrier.BarrierSizeId} (from BarrierSizes.Id)") | |
| print(f" IsStandard: {bidder_barrier.IsStandard}") | |
| print("\n✅ Successfully implemented the required insertion workflow!") | |
| except Exception as e: | |
| print(f"❌ Error: {e}") | |
| db.rollback() | |
| finally: | |
| db.close() | |
| if __name__ == "__main__": | |
| test_barrier_insertion() |