""" Test minimale import GemmaLoader - Test rapido del fix column order Non richiede database completo, usa 10 record dummy """ import pyodbc import sys import shutil from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) from config import EMPTY_DIR, ACCESS_DB_TEMPLATE, GEMMA_LOADER_PATH, GEMMA_LOADER_PASSWORD from src.access_exporter import AccessExporter def main(): print("="*60) print("Test Minimale Import GemmaLoader") print("="*60) # Crea database test con 10 record dummy test_db = Path("Temp/test_minimal.accdb") test_db.parent.mkdir(exist_ok=True) # Copia template template = EMPTY_DIR / ACCESS_DB_TEMPLATE if not template.exists(): print(f"ERRORE: Template non trovato: {template}") return False print(f"\n1. Creazione database test da template...") shutil.copy2(template, test_db) print(f" [OK] Database test: {test_db}") # Inserisci 10 record dummy print(f"\n2. Inserimento 10 record dummy...") conn = pyodbc.connect( f'Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={test_db}' ) cursor = conn.cursor() for i in range(10): cursor.execute(""" INSERT INTO IMDB ( IMDB_CODICE, TIPOL, TI, [TO], ANNO, DUR, GENERE, REGISTA, [CAST], VOTO, VOTANTI ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( f'tt000000{i}', 'movie', f'Test Title {i}', f'Original Title {i}', 2020 + i, 90 + i, 'Drama', f'Test Director {i}', f'Test Actor {i}', 5.0 + i * 0.1, 1000 + i * 100 )) conn.commit() conn.close() print(f" [OK] 10 record inseriti") # Test import GemmaLoader print(f"\n3. Test import in GemmaLoader...") print(f" Target: {GEMMA_LOADER_PATH}") # AccessExporter richiede un path (anche dummy) dummy_sqlite = Path("dummy.db") exporter = AccessExporter(dummy_sqlite) try: exporter.import_to_gemma_loader( test_db, GEMMA_LOADER_PATH, GEMMA_LOADER_PASSWORD ) print("\n" + "="*60) print("[OK] TEST PASSATO!") print("Import GemmaLoader completato senza errori ODBC") print("Il fix column order funziona correttamente!") print("="*60) success = True except Exception as e: print("\n" + "="*60) print("[ERRORE] TEST FALLITO!") print(f"Errore: {e}") print("="*60) success = False finally: # Cleanup database test print(f"\n4. Pulizia...") test_db.unlink(missing_ok=True) print(f" [OK] Database test eliminato") return success if __name__ == '__main__': success = main() sys.exit(0 if success else 1)