Arch/tests/test_projects.py

94 lines
3.6 KiB
Python

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