Se corrigio el sistema de modal de paises
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user