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