Skip to content

Commit

Permalink
Merge pull request #9 from guivaloz:guivaloz/pruebas-unitarias
Browse files Browse the repository at this point in the history
Guivaloz/pruebas-unitarias
  • Loading branch information
guivaloz authored May 3, 2024
2 parents 088cec5 + 1881492 commit 0e3fb12
Show file tree
Hide file tree
Showing 10 changed files with 324 additions and 171 deletions.
2 changes: 1 addition & 1 deletion carina/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def create_app() -> FastAPI:
CORSMiddleware,
allow_origins=settings.origins.split(","),
allow_credentials=False,
allow_methods=["GET"],
allow_methods=["GET", "POST"],
allow_headers=["*"],
)

Expand Down
119 changes: 119 additions & 0 deletions carina/v4/exh_exhortos/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,17 @@

from sqlalchemy.orm import Session

from carina.core.estados.models import Estado
from carina.core.exh_exhortos_archivos.models import ExhExhortoArchivo
from carina.core.exh_exhortos_partes.models import ExhExhortoParte
from carina.core.materias.models import Materia
from carina.core.municipios.models import Municipio
from lib.exceptions import MyIsDeletedError, MyNotExistsError

from ...core.exh_exhortos.models import ExhExhorto

ESTADO_DESTINO_ID = 5


def get_exh_exhortos(database: Session) -> Any:
"""Consultar los exhortos activos"""
Expand All @@ -25,3 +32,115 @@ def get_exh_exhorto(database: Session, exh_exhorto_id: int) -> ExhExhorto:
if exh_exhorto.estatus != "A":
raise MyIsDeletedError("No es activo ese exhorto, está eliminado")
return exh_exhorto


def create_exh_exhorto(database: Session, exh_exhorto_in: ExhExhorto) -> ExhExhorto:
"""Crear un exhorto"""

# Inicializar la instancia ExhExhorto
exh_exhorto = ExhExhorto()

# Definir exhorto_origen_id
exh_exhorto.exhorto_origen_id = exh_exhorto_in.exhortoOrigenId

# Consultar y validar el municipio destino, que es Identificador INEGI
municipio_destino_clave = str(exh_exhorto_in.municipioDestinoId).zfill(3)
municipio_destino = (
database.query(Municipio).filter_by(estado_id=ESTADO_DESTINO_ID).filter_by(clave=municipio_destino_clave).first()
)

if municipio_destino is None:
raise MyNotExistsError("No existe ese municipio de destino")
exh_exhorto.municipio_destino_id = municipio_destino.id

# Consultar y validar la materia
materia = database.query(Materia).filter_by(clave=exh_exhorto_in.materiaClave).first()
if materia is None:
raise MyNotExistsError("No existe esa materia")
exh_exhorto.materia = materia

# Consultar y validar el estado y municipio de origen, que son Identificadores INEGI
estado_clave = str(exh_exhorto_in.estadoOrigenId).zfill(2)
estado = database.query(Estado).filter_by(clave=estado_clave).first()
if estado is None:
raise MyNotExistsError("No existe ese estado de origen")
municipio_clave = str(exh_exhorto_in.municipioOrigenId).zfill(3)
municipio = database.query(Municipio).filter_by(estado_id=estado.id).filter_by(clave=municipio_clave).first()
if municipio is None:
raise MyNotExistsError("No existe ese municipio de origen")
exh_exhorto.municipio_origen_id = municipio.id

# Identificador propio del Juzgado/Área que envía el Exhorto
exh_exhorto.juzgado_origen_id = exh_exhorto_in.juzgadoOrigenId

# Nombre del Juzgado/Área que envía el Exhorto
exh_exhorto.juzgado_origen_nombre = exh_exhorto_in.juzgadoOrigenNombre

# El número de expediente (o carpeta procesal, carpeta...) que tiene el asunto en el Juzgado de Origen
exh_exhorto.numero_expediente_origen = exh_exhorto_in.numeroExpedienteOrigen

# El número del oficio con el que se envía el exhorto, el que corresponde al control interno del Juzgado de origen
exh_exhorto.numero_oficio_origen = exh_exhorto_in.numeroOficioOrigen

# Nombre del tipo de Juicio, o asunto, listado de los delitos (para materia Penal) que corresponde al Expediente del cual el Juzgado envía el Exhorto
exh_exhorto.tipo_juicio_asunto_delitos = exh_exhorto_in.tipoJuicioAsuntoDelitos

# Nombre completo del Juez del Juzgado o titular del Área que envía el Exhorto
exh_exhorto.juez_exhortante = exh_exhorto_in.juezExhortante

# Número de fojas que contiene el exhorto. El valor 0 significa "No Especificado"
exh_exhorto.fojas = exh_exhorto_in.fojas

# Cantidad de dias a partir del día que se recibió en el Poder Judicial exhortado que se tiene para responder el Exhorto. El valor de 0 significa "No Especificado"
exh_exhorto.dias_responder = exh_exhorto_in.diasResponder

# Nombre del tipo de diligenciación que le corresponde al exhorto enviado. Este puede contener valores como "Oficio", "Petición de Parte"
exh_exhorto.tipo_diligenciacion_nombre = exh_exhorto_in.tipoDiligenciacionNombre

# Fecha y hora en que el Poder Judicial exhortante registró que se envió el exhorto en su hora local. En caso de no enviar este dato, el Poder Judicial exhortado puede tomar su fecha hora local.
exh_exhorto.fecha_origen = exh_exhorto_in.fechaOrigen

# Texto simple que contenga información extra o relevante sobre el exhorto.
exh_exhorto.observaciones = exh_exhorto_in.observaciones

# Cargar el exhorto
database.add(exh_exhorto)
database.commit()
database.refresh(exh_exhorto)

# Procesar las partes
# partes = []
# for parte in exh_exhorto_in.partes:
# partes.append(
# ExhExhortoParte(
# exh_exhorto=exh_exhorto,
# nombre=parte.nombre,
# apellido_paterno=parte.apellidoPaterno,
# apellido_materno=parte.apellidoMaterno,
# genero=parte.genero,
# es_persona_moral=parte.esPersonaMoral,
# tipo_parte=parte.tipoParte,
# tipo_parte_nombre=parte.tipoParteNombre,
# )
# )
# database.add(parte)

# Procesar los archivos
# archivos = []
# for archivo in exh_exhorto_in.archivos:
# archivos.append(
# ExhExhortoArchivo(
# exh_exhorto=exh_exhorto,
# nombre_archivo=archivo.nombreArchivo,
# hash_sha1=archivo.hashSha1,
# hash_sha256=archivo.hashSha256,
# tipo_documento=archivo.tipoDocumento,
# )
# )
# database.add(archivo)

# Terminar la transacción
database.commit()

# Entregar
return exh_exhorto
33 changes: 30 additions & 3 deletions carina/v4/exh_exhortos/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Exh Exhortos v4, rutas (paths)
"""

from datetime import datetime
from typing import Annotated

from fastapi import APIRouter, Depends, HTTPException, status
Expand All @@ -13,10 +14,16 @@

from ...core.permisos.models import Permiso
from ..usuarios.authentications import UsuarioInDB, get_current_active_user
from .crud import get_exh_exhortos, get_exh_exhorto
from .schemas import ExhExhortoOut, OneExhExhortoOut
from .crud import create_exh_exhorto, get_exh_exhortos, get_exh_exhorto
from .schemas import (
ExhExhortoConfirmacionDatosExhortoRecibidoOut,
ExhExhortoIn,
ExhExhortoOut,
OneExhExhortoConfirmacionDatosExhortoRecibidoOut,
OneExhExhortoOut,
)
from ..exh_exhortos_archivos.schemas import ExhExhortoArchivoOut
from ..exh_exhortos_partes.schemas import ExhExhortoParteIn, ExhExhortoParteOut
from ..exh_exhortos_partes.schemas import ExhExhortoParteIn

exh_exhortos = APIRouter(prefix="/v4/exh_exhortos", tags=["exhortos"])

Expand Down Expand Up @@ -81,3 +88,23 @@ async def detalle_exh_exhorto(

# Entregar un exhorto
return OneExhExhortoOut(success=True, data=exh_exhorto)


@exh_exhortos.post("", response_model=OneExhExhortoConfirmacionDatosExhortoRecibidoOut)
async def confirmacion_datos_exhorto_recibido(
current_user: Annotated[UsuarioInDB, Depends(get_current_active_user)],
database: Annotated[Session, Depends(get_db)],
exh_exhorto: ExhExhortoIn,
):
"""Crear un Exhorto"""
if current_user.permissions.get("EXH EXHORTOS", 0) < Permiso.CREAR:
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Forbidden")
try:
create_exh_exhorto(database, exh_exhorto)
except MyAnyError as error:
return OneExhExhortoConfirmacionDatosExhortoRecibidoOut(success=False, message=str(error))
data = ExhExhortoConfirmacionDatosExhortoRecibidoOut(
exhortoOrigenId="XXX",
fechaHora=datetime.now(),
)
return OneExhExhortoConfirmacionDatosExhortoRecibidoOut(success=True, data=data)
3 changes: 1 addition & 2 deletions carina/v4/exh_exhortos/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,11 @@ class OneExhExhortoOut(OneBaseOut):
class ExhExhortoConfirmacionDatosExhortoRecibidoOut(BaseModel):
"""Esquema para confirmar la recepción de un exhorto"""

id: int | None = None
exhortoOrigenId: str | None = None
fechaHora: datetime | None = None


class OneExhExhortoConfirmacionDatosExhortoRecibidoOut(OneBaseOut):
"""Esquema para entregar una confirmación de la recepción de un exhorto"""

data: list[ExhExhortoConfirmacionDatosExhortoRecibidoOut] | None = None
data: ExhExhortoConfirmacionDatosExhortoRecibidoOut | None = None
53 changes: 0 additions & 53 deletions tests/test_distritos.py

This file was deleted.

25 changes: 11 additions & 14 deletions tests/test_autoridades.py → tests/test_estados.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,35 @@
"""
Unit tests for autoridades category
Unit test for estados category
"""
import unittest

import unittest
import requests

from tests.load_env import config


class TestAutoridades(unittest.TestCase):
"""Tests for autoridades category"""
class TestEstados(unittest.TestCase):
"""Tests for estados category"""

def test_get_autoridades(self):
"""Test GET method for autoridades"""
def test_get_estados(self):
"""Test GET method for estados"""
response = requests.get(
f"{config['api_base_url']}/autoridades",
f"{config['api_base_url']}/estados",
headers={"X-Api-Key": config["api_key"]},
timeout=config["timeout"],
)
self.assertEqual(response.status_code, 200)

def test_get_autoridades_by_es_extinto(self):
"""Test GET method for autoridades by es_extinto"""
def test_get_estado_by_clave_inegi(self):
"""Test GET method for estado by clave INEGI"""
response = requests.get(
f"{config['api_base_url']}/autoridades",
f"{config['api_base_url']}/estados/05",
headers={"X-Api-Key": config["api_key"]},
params={"es_extinto": 1},
timeout=config["timeout"],
)
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertEqual(data["success"], True)
for item in data["items"]:
self.assertEqual(item["es_extinto"], 1)
self.assertEqual(data["data"]["nombre"], "COAHUILA DE ZARAGOZA")


if __name__ == "__main__":
Expand Down
Loading

0 comments on commit 0e3fb12

Please sign in to comment.