AutoBackups/test_functions.py

143 lines
3.9 KiB
Python

#!/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()