CartamaticPOS SDK

Testing y capturas

Cómo validar el SDK con mocks, integración opt-in, capturas locales y fixtures sanitizadas.

El SDK se desarrolla con tests mockeados y validación real opt-in.

Datos reales

No commitees capturas crudas, .env poblados ni payloads con clientes, staff, pagos, impuestos u operación sensible.

Comandos del SDK

Desde Cartamatic/pos-sdk:

pnpm test
pnpm test:integration:toteat
pnpm validate
pnpm test:coverage

Integración real

Los tests reales de Toteat se saltan automáticamente si faltan credenciales.

Variables locales autorizadas:

CARTAMATIC_POS_TOTEAT_RESTAURANT_ID=
CARTAMATIC_POS_TOTEAT_LOCAL_ID=
CARTAMATIC_POS_TOTEAT_USER_ID=
CARTAMATIC_POS_TOTEAT_API_TOKEN=
CARTAMATIC_POS_TOTEAT_ENVIRONMENT=production
CARTAMATIC_POS_TOTEAT_BASE_URL=
CARTAMATIC_POS_TOTEAT_WEBHOOK_SECRET=
.env.local
shiftstatus.json
sales.json

Capturas read-only

El SDK tiene un script para capturar respuestas reales de endpoints de lectura.

pnpm capture:toteat shiftstatus

Las capturas crudas se guardan en .captures/toteat/, carpeta ignorada por git.

Flujo de fixtures

Capturar payload real localmente

Usa .captures/toteat/, carpeta ignorada por git.

Sanitizar y reducir

Remueve datos de clientes, staff, impuestos, pagos y operación sensible. Reduce arrays grandes a muestras mínimas representativas.

Guardar fixture sanitizada

Guárdala bajo src/__fixtures__/toteat/.

Cubrir schema y normalizer

Agrega tests antes de endurecer Zod schemas.

Orden de validación real

OrdenEndpointMétodo SDKRiesgo
1GET /shiftstatusshifts.getCurrentShiftStatus()Bajo
2GET /tablestables.getTables()Bajo
3GET /productscatalog.getProducts()Bajo
4GET /collectionsales.getCollection()Bajo
5GET /salessales.getSales()Bajo
6GET /salesbywaitersales.getSalesByWaiter()Bajo
7GET /orderstatusorders.getOrderStatus()Requiere ID conocido
8GET /orders/cancellation-reportorders.getCancellationReport()Validar legacy
9GET /fiscaldocumentsfiscal.getFiscalDocuments()Datos fiscales sensibles
10GET /inventorystateinventory.getInventoryState()Bajo/medio
11GET /accountingmovementsaccounting.getAccountingMovements()Datos contables sensibles
12POST /orders/dispatchorders.notifyDispatch()Escritura, requiere aprobación
13POST /purchasemovementspurchases.createPurchaseMovement()Escritura, requiere aprobación
14POST /ordersorders.createOrder()Escritura, requiere aprobación

Reglas

En esta página