#!/usr/bin/env python3 """ Test script for the create_project endpoint using the spProjectsInsert stored procedure """ import requests import json from datetime import datetime from decimal import Decimal # API endpoint BASE_URL = "http://localhost:8000" ENDPOINT = f"{BASE_URL}/api/v1/projects/" def test_create_project(): """Test creating a project with the new stored procedure implementation""" # Sample project data matching the stored procedure parameters project_data = { "project_name": "Test Aqua Barrier Project", "project_location": "Los Angeles, CA", "project_type": "Commercial", "bid_date": "2024-01-15T10:00:00", "start_date": "2024-02-01T08:00:00", "is_awarded": True, "notes": "Test project for SP validation", "barrier_size": "50ft x 100ft", "lease_term": "12 months", "purchase_option": False, "lead_source": "Website", "rep": "John Doe", "engineer_company_id": 1, "engineer_notes": "Standard installation required", "engineer_company": "ABC Engineering", "status": 1, "customer_type_id": 1, # Billing address "bill_name": "Test Company Inc", "bill_address1": "123 Main Street", "bill_address2": "Suite 100", "bill_city": "Los Angeles", "bill_state": "CA", "bill_zip": "90210", "bill_email": "billing@testcompany.com", "bill_phone": "555-123-4567", # Shipping address "ship_name": "Test Company Inc", "ship_address1": "456 Oak Avenue", "ship_city": "Los Angeles", "ship_state": "CA", "ship_zip": "90211", "ship_email": "shipping@testcompany.com", "ship_phone": "555-234-5678", "ship_office_phone": "555-345-6789", # Payment and project details "acct_payable": "AP Department", "payment_term_id": 1, "payment_note": "Net 30", "rental_price_id": 1, "purchase_price_id": 1, "est_ship_date_id": 1, "fob_id": 1, "expedite_fee": "500.00", "est_freight_id": 1, "est_freight_fee": "250.00", "tax_rate": "8.25", "weekly_charge": "1500.00", "crew_members": 3, "tack_hoes": 2, "water_pump": 1, "water_pump2": 1, "pipes": 10, "timpers": 5, "est_installation_time": 8, "repair_kits": "Standard Kit", "installation_advisor": "Installation notes here...", "employee_id": "EMP001", "install_date": "2024-02-15T09:00:00", "commission": "1000.00", "advisor_id": "ADV001", "ship_via": "UPS Ground", "valid_for": "Quote valid for 30 days", "fas_dam": False } print("Testing project creation via stored procedure...") print(f"POST {ENDPOINT}") print(f"Payload: {json.dumps(project_data, indent=2)}") try: # Make the API call response = requests.post( ENDPOINT, json=project_data, headers={"Content-Type": "application/json"} ) print(f"\nResponse Status: {response.status_code}") print(f"Response Headers: {dict(response.headers)}") if response.status_code == 201: result = response.json() print(f"\nāœ… Project created successfully!") print(f"ProjectNo: {result.get('project_no')}") print(f"Project Name: {result.get('project_name')}") print(f"Response: {json.dumps(result, indent=2, default=str)}") return True else: print(f"\nāŒ Error creating project") print(f"Error: {response.text}") return False except requests.exceptions.RequestException as e: print(f"\nāŒ Network error: {e}") return False except Exception as e: print(f"\nāŒ Unexpected error: {e}") return False if __name__ == "__main__": success = test_create_project() if success: print("\nšŸŽ‰ Test completed successfully!") else: print("\nšŸ’„ Test failed!")