ab-ms-core / tests /unit /test_barrier_insertion.py
PupaClic
Add comprehensive unit tests for various endpoints and features
7ff20d3
#!/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()