#!/usr/bin/env python3 """ Script de prueba para verificar las funcionalidades de backup manual y configuración de proyectos implementadas """ import sys import os from pathlib import Path # Agregar el directorio src al path current_dir = Path(__file__).parent src_dir = current_dir / "src" sys.path.insert(0, str(src_dir)) # Imports de módulos propios from models.config_model import Config from models.project_model import ProjectManager from services.basic_backup_service import BasicBackupService def test_backup_manual(): """Probar funcionalidad de backup manual""" print("=== TEST BACKUP MANUAL ===") try: # Inicializar servicios config = Config() project_manager = ProjectManager() backup_service = BasicBackupService(config) # Obtener proyectos projects = project_manager.get_all_projects() print(f"Proyectos encontrados: {len(projects)}") if not projects: print("No hay proyectos para probar") return # Probar backup del primer proyecto project = projects[0] print(f"Probando backup del proyecto: {project.name}") print(f"Ruta del proyecto: {project.path}") # Ejecutar backup result = backup_service.backup_project(project) if result["success"]: print("✅ BACKUP EXITOSO!") print(f"Archivo creado: {result['backup_file']}") print(f"Tamaño: {result['file_size_mb']:.2f} MB") else: print("❌ BACKUP FALLÓ!") print(f"Error: {result['error']}") except Exception as e: print(f"❌ ERROR EN TEST: {e}") import traceback traceback.print_exc() def test_config_update(): """Probar funcionalidad de actualización de configuración""" print("\n=== TEST ACTUALIZACIÓN DE CONFIGURACIÓN ===") try: # Inicializar ProjectManager project_manager = ProjectManager() # Obtener proyectos projects = project_manager.get_all_projects() if not projects: print("No hay proyectos para probar") return project = projects[0] print(f"Probando configuración del proyecto: {project.name}") print( f"Estado inicial - Habilitado: {project.enabled}, Schedule: {project.schedule}" ) # Preparar nueva configuración new_config = { "schedule_config": { "schedule": "hourly", "schedule_time": "10:30", "enabled": False, } } # Actualizar configuración success = project_manager.update_project_config(project.id, new_config) if success: print("✅ CONFIGURACIÓN ACTUALIZADA!") # Verificar cambios updated_project = project_manager.get_project(project.id) print( f"Estado actualizado - Habilitado: {updated_project.enabled}, Schedule: {updated_project.schedule}" ) # Restaurar configuración original restore_config = { "schedule_config": { "schedule": "daily", "schedule_time": "02:00", "enabled": True, } } project_manager.update_project_config(project.id, restore_config) print("✅ Configuración restaurada") else: print("❌ FALLO AL ACTUALIZAR CONFIGURACIÓN!") except Exception as e: print(f"❌ ERROR EN TEST: {e}") import traceback traceback.print_exc() def main(): """Función principal""" print("AutoBackups - Test de Funcionalidades") print("=" * 50) # Test 1: Backup manual test_backup_manual() # Test 2: Actualización de configuración test_config_update() print("\n" + "=" * 50) print("Tests completados") if __name__ == "__main__": main()