Files
CRM_AGENTES_CARGA/backend/tests/test_suppliers.py
Aduanasoft b12af1a561 feat(crm): catálogos Clientes/Prospectos (enriquecido) y Proveedores + direcciones/documentos
Alinea el dominio al spec de catálogos:
- accounts (Clientes/Prospectos): tipo registro/persona, CURP, clasificación
  comercial, bloque fiscal (régimen, CFDI, pago, crédito), auditoría, notas internas
- suppliers (Proveedores): clasificación múltiple, cobertura, países/puertos/
  aeropuertos/aduanas (JSON), fiscal
- addresses y documents: tablas compartidas con FK a cliente o proveedor
- contacts enriquecidos (extensión, whatsapp, área, flags "recibe…", supplier_id)
- migración a7b8c9d0e1f2 (ALTER + CREATE) con downgrade completo
- permisos supplier/address/document; seed de datos actualizado
- 39 tests pytest en verde

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 16:19:13 -06:00

52 lines
1.9 KiB
Python

import pytest
from fastapi import HTTPException
from api.v1.modules.crm.suppliers import service
from api.v1.modules.crm.suppliers.dto import SupplierCreate, SupplierUpdate
T, C = 1, 1
def test_create_supplier_with_multivalue_fields(db):
supplier = service.create_supplier(
db,
SupplierCreate(
name="Naviera del Golfo SA",
classifications=["naviera", "agente_carga"],
coverage="internacional",
countries=["MX", "US", "PA"],
ports=["Veracruz", "Manzanillo"],
customs=["Veracruz"],
quote_currency="USD",
),
T, C, user_id="dev",
)
assert supplier.id is not None
assert supplier.status == "active"
assert supplier.classifications == ["naviera", "agente_carga"]
assert supplier.countries == ["MX", "US", "PA"]
assert supplier.created_by == "dev"
def test_list_and_search_supplier(db):
service.create_supplier(db, SupplierCreate(name="Aerolínea Carga MX", classifications=["aerolinea"]), T, C)
service.create_supplier(db, SupplierCreate(name="Transportes Terrestres"), T, C)
assert len(service.get_suppliers(db, T, C)) == 2
found = service.get_suppliers(db, T, C, search="aero")
assert len(found) == 1 and found[0].name == "Aerolínea Carga MX"
def test_update_supplier_replaces_lists(db):
s = service.create_supplier(db, SupplierCreate(name="X", classifications=["naviera"]), T, C)
upd = service.update_supplier(db, s.id, SupplierUpdate(classifications=["ferrocarril", "almacen"]), T, C)
assert upd.classifications == ["ferrocarril", "almacen"]
def test_soft_delete_supplier(db):
s = service.create_supplier(db, SupplierCreate(name="Y"), T, C)
service.delete_supplier(db, s.id, T, C)
with pytest.raises(HTTPException) as exc:
service.get_supplier(db, s.id, T, C)
assert exc.value.status_code == 404
assert service.get_suppliers(db, T, C) == []