Se corrigio el sistema de modal de paises

This commit is contained in:
2026-01-22 13:06:08 -06:00
parent 5a254fb2b1
commit 4fda7b28c7
5 changed files with 156 additions and 97 deletions

View File

@@ -12,6 +12,9 @@ def access_token():
@pytest.fixture(scope="session")
def client():
from api.v1.modules.public.reference_data.countries.routes import router as countries_router
from api.v1.modules.public.reference_data.transport_types.routes import router as transport_types_router
app = FastAPI()
app.include_router(router)
app.include_router(countries_router)
app.include_router(transport_types_router)
return TestClient(app)

View File

@@ -15,13 +15,26 @@ router = APIRouter(prefix="/countries")
async def list_countries(
page: int = Query(1, ge=1, description="Número de página"),
page_size: int = Query(50, ge=1, le=100, description="Tamaño de página"),
search: str = Query(None, description="Término de búsqueda"),
db: Session = Depends(get_core_db),
):
"""Endpoint público para obtener lista de países - no requiere autenticación"""
skip = (page - 1) * page_size
query = db.query(Country)
items = query.offset(skip).limit(page_size).all()
if search:
search_filter = f"%{search}%"
query = query.filter(
(Country.m3_key.ilike(search_filter)) |
(Country.mex_key.ilike(search_filter)) |
(Country.ame_key.ilike(search_filter)) |
(Country.description_es.ilike(search_filter)) |
(Country.description_en.ilike(search_filter))
)
total = query.count()
items = query.offset(skip).limit(page_size).all()
return {
"items": [CountryDTO.model_validate(obj) for obj in items],
"total": total,

View File

@@ -9,13 +9,17 @@ client = TestClient(app)
@pytest.mark.usefixtures("client", "access_token")
def test_list_countries(client, access_token):
def test_list_countries_with_search(client, access_token):
headers = {"Authorization": f"Bearer {access_token}"}
response = client.get("/countries/", headers=headers)
# Search for a known country from seed, e.g., "Mexico" or "MEX"
response = client.get("/countries/?search=Mexico", headers=headers)
assert response.status_code == 200
assert "items" in response.json()
assert "page" in response.json()
assert "page_size" in response.json()
data = response.json()
assert "items" in data
# Depending on seed data, there should be at least one item if "Mexico" exists
if data["items"]:
for item in data["items"]:
assert "mexico" in item["description_es"].lower() or "mexico" in item["description_en"].lower()
@pytest.mark.usefixtures("client", "access_token")