Arch/tests/test_schemas.py

79 lines
3.2 KiB
Python

import pytest
import json
import os
class TestSchemas:
"""Test schema management functionality."""
def test_list_schemas(self, logged_in_client):
"""Test listing schemas."""
response = logged_in_client.get('/schemas/')
assert response.status_code == 200
assert b'Esquemas de Proyecto' in response.data
def test_view_schema(self, logged_in_client):
"""Test viewing a schema."""
response = logged_in_client.get('/schemas/view/TEST001')
assert response.status_code == 200
assert b'Esquema de prueba' in response.data
def test_create_schema(self, logged_in_client, app):
"""Test creating a new schema."""
response = logged_in_client.post('/schemas/create', data={
'codigo': 'TEST002',
'descripcion': 'Nuevo esquema de prueba',
'documentos-0-tipo': 'pdf',
'documentos-0-nombre': 'Manual de Usuario',
'documentos-0-nivel_ver': 0,
'documentos-0-nivel_editar': 5000,
'documentos-1-tipo': 'txt',
'documentos-1-nombre': 'Notas de Proyecto',
'documentos-1-nivel_ver': 0,
'documentos-1-nivel_editar': 1000
}, follow_redirects=True)
assert response.status_code == 200
# Check if schema was created
with app.app_context():
schemas_path = os.path.join(app.config['STORAGE_PATH'], 'schemas', 'schema.json')
with open(schemas_path, 'r') as f:
schemas = json.load(f)
assert 'TEST002' in schemas
assert schemas['TEST002']['descripcion'] == 'Nuevo esquema de prueba'
assert len(schemas['TEST002']['documentos']) == 2
def test_edit_schema(self, logged_in_client, app):
"""Test editing a schema."""
# First create a schema to edit
logged_in_client.post('/schemas/create', data={
'codigo': 'TESTEDIT',
'descripcion': 'Esquema para editar',
'documentos-0-tipo': 'pdf',
'documentos-0-nombre': 'Documento Original',
'documentos-0-nivel_ver': 0,
'documentos-0-nivel_editar': 5000
}, follow_redirects=True)
# Now edit it
response = logged_in_client.post('/schemas/edit/TESTEDIT', data={
'codigo': 'TESTEDIT',
'descripcion': 'Esquema editado',
'documentos-0-tipo': 'pdf',
'documentos-0-nombre': 'Documento Modificado',
'documentos-0-nivel_ver': 500,
'documentos-0-nivel_editar': 6000
}, follow_redirects=True)
assert response.status_code == 200
# Verify changes
with app.app_context():
schemas_path = os.path.join(app.config['STORAGE_PATH'], 'schemas', 'schema.json')
with open(schemas_path, 'r') as f:
schemas = json.load(f)
assert 'TESTEDIT' in schemas
assert schemas['TESTEDIT']['descripcion'] == 'Esquema editado'
assert schemas['TESTEDIT']['documentos'][0]['nombre'] == 'Documento Modificado'
assert schemas['TESTEDIT']['documentos'][0]['nivel_ver'] == 500