import pytest import json import os class TestProjects: """Test project-related functionality.""" def test_project_list(self, logged_in_client): """Test listing projects.""" response = logged_in_client.get('/projects/') assert response.status_code == 200 def test_create_project(self, logged_in_client, app): """Test creating a new project.""" response = logged_in_client.post('/projects/create', data={ 'codigo': 'TEST123', 'descripcion': 'Proyecto de Prueba', 'cliente': 'Cliente Test', 'esquema': 'TEST001', 'destinacion': 'Pruebas', 'notas': 'Notas de prueba' }, follow_redirects=True) assert response.status_code == 200 # Check if project was created in storage with app.app_context(): # Check indices indices_path = os.path.join(app.config['STORAGE_PATH'], 'indices.json') with open(indices_path, 'r') as f: indices = json.load(f) assert indices['max_project_id'] > 0 def test_view_project(self, logged_in_client, app): """Test viewing a project (requires creating one first).""" # Create a project first logged_in_client.post('/projects/create', data={ 'codigo': 'TEST456', 'descripcion': 'Proyecto para visualizar', 'cliente': 'Cliente Test', 'esquema': 'TEST001', 'destinacion': 'Pruebas', 'notas': 'Notas de prueba' }, follow_redirects=True) # Now find the project ID with app.app_context(): projects_dir = os.path.join(app.config['STORAGE_PATH'], 'projects') project_dirs = os.listdir(projects_dir) assert len(project_dirs) > 0 # Get first project directory project_dir = project_dirs[0] project_id = project_dir.split('_')[0].replace('@', '') # Try to view it response = logged_in_client.get(f'/projects/{project_id}') assert response.status_code == 200 assert b'Proyecto para visualizar' in response.data def test_edit_project(self, logged_in_client, app): """Test editing a project.""" # Create a project first logged_in_client.post('/projects/create', data={ 'codigo': 'TESTEDIT', 'descripcion': 'Proyecto para editar', 'cliente': 'Cliente Test', 'esquema': 'TEST001', 'destinacion': 'Pruebas', 'notas': 'Notas originales' }, follow_redirects=True) # Find the project ID with app.app_context(): projects_dir = os.path.join(app.config['STORAGE_PATH'], 'projects') project_dirs = [d for d in os.listdir(projects_dir) if 'TESTEDIT' in d] assert len(project_dirs) > 0 project_dir = project_dirs[0] project_id = project_dir.split('_')[0].replace('@', '') # Edit the project response = logged_in_client.post(f'/projects/{project_id}/edit', data={ 'codigo': 'TESTEDIT', 'descripcion': 'Proyecto editado', 'cliente': 'Cliente Test Modificado', 'esquema': 'TEST001', 'destinacion': 'Pruebas Modificadas', 'notas': 'Notas modificadas' }, follow_redirects=True) assert response.status_code == 200 assert b'Proyecto editado' in response.data