#!/usr/bin/env python3 """ Test script for AMO CRM import functionality Verifies that the import script works correctly """ import asyncio import sys from pathlib import Path # Add project root to Python path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from scripts.import_amocrm_data import AMOCRMImporter from adapters.postgres.database import SessionLocal, init_db from adapters.postgres.models import User, Deal, CustomField from utils.config import settings async def test_import(): """Test the import functionality""" print("๐Ÿงช Testing AMO CRM Import Script") print("=" * 50) # Check configuration if not settings.AMO_CRM_ACCESS_TOKEN: print("โŒ AMO_CRM_ACCESS_TOKEN not set - cannot test import") return False try: # Test dry run import print("Testing dry run import...") importer = AMOCRMImporter( limit_per_entity=5, # Very small limit for testing batch_size=2, dry_run=True, verbose=True ) # Import just users for testing stats = await importer.import_all_data(['users']) if 'users' in stats: user_stats = stats['users'] print(f"โœ… Dry run successful: {user_stats}") if user_stats.fetched > 0: print("โœ… Successfully fetched data from AMO CRM") else: print("โš ๏ธ No data fetched - check AMO CRM connection") return False else: print("โŒ No stats returned for users") return False # Test database connection print("\nTesting database connection...") db = SessionLocal() try: # Count existing users user_count = db.query(User).count() print(f"โœ… Database connection OK - {user_count} existing users") except Exception as e: print(f"โŒ Database connection failed: {e}") return False finally: db.close() print("\nโœ… All tests passed!") print("\nYou can now run the full import with:") print(" python scripts/run_import.py test") print(" python scripts/run_import.py quick") print(" python scripts/import_amocrm_data.py --help") return True except Exception as e: print(f"โŒ Test failed: {str(e)}") import traceback traceback.print_exc() return False def main(): """Main function""" success = asyncio.run(test_import()) return 0 if success else 1 if __name__ == "__main__": exit_code = main() sys.exit(exit_code)