"""Pruebas de la siembra idempotente de catálogos globales del CRM.""" from api.v1.modules.crm.catalogs.models import CatalogItem from api.v1.modules.crm.catalogs.seed import seed_global_catalogs # Catálogos nuevos del proceso comercial y una clave base que debe existir en cada uno. NEW_CATALOGS = { "tipo_operacion": "importacion", "medio_transporte": "maritimo", "tipo_servicio": "puerto_puerto", "prioridad": "urgente", "tipo_mercancia": "peligrosa", "unidad_medida": "kg", "tipo_embalaje": "pallet", "servicio_adicional": "seguro", "tipo_documento": "factura_comercial", } def _codes(db, catalog: str) -> set[str]: return { row.code for row in db.query(CatalogItem.code).filter( CatalogItem.catalog == catalog, CatalogItem.tenant_id.is_(None) ) } def test_seed_creates_new_catalogs(db): seed_global_catalogs(db) for catalog, base_code in NEW_CATALOGS.items(): codes = _codes(db, catalog) assert codes, f"El catálogo {catalog} quedó vacío" assert base_code in codes, f"Falta la clave base {base_code} en {catalog}" def test_seed_is_idempotent(db): first = seed_global_catalogs(db) assert first, "La primera corrida debió sembrar filas" second = seed_global_catalogs(db) assert second == {}, "La segunda corrida no debe agregar filas nuevas" def test_pais_catalog_populated(db): """El catálogo pais alimenta Origen/Destino de la solicitud (decisión 6).""" seed_global_catalogs(db) codes = _codes(db, "pais") assert len(codes) > 100 assert "MEX" in codes