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:coverageIntegració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=Capturas read-only
El SDK tiene un script para capturar respuestas reales de endpoints de lectura.
pnpm capture:toteat shiftstatusLas 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
| Orden | Endpoint | Método SDK | Riesgo |
|---|---|---|---|
| 1 | GET /shiftstatus | shifts.getCurrentShiftStatus() | Bajo |
| 2 | GET /tables | tables.getTables() | Bajo |
| 3 | GET /products | catalog.getProducts() | Bajo |
| 4 | GET /collection | sales.getCollection() | Bajo |
| 5 | GET /sales | sales.getSales() | Bajo |
| 6 | GET /salesbywaiter | sales.getSalesByWaiter() | Bajo |
| 7 | GET /orderstatus | orders.getOrderStatus() | Requiere ID conocido |
| 8 | GET /orders/cancellation-report | orders.getCancellationReport() | Validar legacy |
| 9 | GET /fiscaldocuments | fiscal.getFiscalDocuments() | Datos fiscales sensibles |
| 10 | GET /inventorystate | inventory.getInventoryState() | Bajo/medio |
| 11 | GET /accountingmovements | accounting.getAccountingMovements() | Datos contables sensibles |
| 12 | POST /orders/dispatch | orders.notifyDispatch() | Escritura, requiere aprobación |
| 13 | POST /purchasemovements | purchases.createPurchaseMovement() | Escritura, requiere aprobación |
| 14 | POST /orders | orders.createOrder() | Escritura, requiere aprobación |