Files
dbis_core-lite/tests/exports/TEST_SUMMARY.md
2026-02-09 21:51:45 -08:00

5.4 KiB

Export Functionality Test Summary

Test Coverage

Unit Tests Created

  1. Identity Map Service (tests/unit/exports/identity-map.test.ts)

    • buildForPayment - builds identity map with all identifiers
    • buildForPayment - returns null for non-existent payment
    • findByUETR - finds payment by UETR
    • findByUETR - returns null for non-existent UETR
    • buildForPayments - builds identity maps for multiple payments
    • verifyUETRPassThrough - verifies valid UETR format
    • verifyUETRPassThrough - returns false for invalid UETR
  2. Raw ISO Container (tests/unit/exports/containers/raw-iso-container.test.ts)

    • exportMessage - exports ISO 20022 message without modification
    • exportMessage - ensures UETR is present when requested
    • exportMessage - normalizes line endings to LF
    • exportMessage - normalizes line endings to CRLF
    • exportBatch - exports multiple messages
    • validate - validates correct ISO 20022 message
    • validate - detects missing ISO 20022 namespace
    • validate - detects missing UETR in payment message
  3. XML v2 Container (tests/unit/exports/containers/xmlv2-container.test.ts)

    • exportMessage - exports message in XML v2 format
    • exportMessage - includes Alliance Access Header
    • exportMessage - includes Application Header
    • exportMessage - embeds XML content in MessageBlock
    • exportBatch - exports batch of messages
    • validate - validates correct XML v2 structure
    • validate - detects missing DataPDU
  4. RJE Container (tests/unit/exports/containers/rje-container.test.ts)

    • exportMessage - exports message in RJE format with blocks
    • exportMessage - uses CRLF line endings
    • exportMessage - includes UETR in Block 3
    • exportBatch - exports batch with $ delimiter
    • exportBatch - does not have trailing $ delimiter
    • validate - validates correct RJE format
    • validate - detects missing CRLF
    • validate - detects trailing $ delimiter
  5. Format Detector (tests/unit/exports/formats/format-detector.test.ts)

    • detect - detects RJE format
    • detect - detects XML v2 format
    • detect - detects Raw ISO 20022 format
    • detect - detects Base64-encoded MT
    • detect - returns unknown for unrecognized format
  6. Export Validator (tests/unit/exports/utils/export-validator.test.ts)

    • validateQuery - validates correct query parameters
    • validateQuery - detects invalid date range
    • validateQuery - detects date range exceeding 365 days
    • validateQuery - validates UETR format
    • validateQuery - accepts valid UETR format
    • validateQuery - validates account number length
    • validateFileSize - validates file size within limit
    • validateFileSize - detects file size exceeding limit
    • validateFileSize - detects empty file
    • validateRecordCount - validates record count within limit
    • validateRecordCount - detects record count exceeding limit
    • validateRecordCount - detects zero record count

Integration Tests Created

  1. Export Service (tests/integration/exports/export-service.test.ts)

    • exportMessages - exports messages in raw ISO format
    • exportMessages - exports messages in XML v2 format
    • exportMessages - exports batch of messages
    • exportMessages - filters by date range
    • exportMessages - filters by UETR
    • exportMessages - throws error when no messages found
    • exportLedger - exports ledger postings with correlation
    • exportFull - exports full correlation data
  2. Export Routes (tests/integration/exports/export-routes.test.ts)

    • GET /api/v1/exports/messages - exports messages in raw ISO format
    • GET /api/v1/exports/messages - exports messages in XML v2 format
    • GET /api/v1/exports/messages - exports batch of messages
    • GET /api/v1/exports/messages - filters by date range
    • GET /api/v1/exports/messages - requires authentication
    • GET /api/v1/exports/messages - requires CHECKER or ADMIN role
    • GET /api/v1/exports/messages - validates query parameters
    • GET /api/v1/exports/ledger - exports ledger postings
    • GET /api/v1/exports/identity-map - returns identity map by payment ID
    • GET /api/v1/exports/identity-map - returns 400 if neither paymentId nor uetr provided
    • GET /api/v1/exports/identity-map - returns 404 for non-existent payment
    • GET /api/v1/exports/formats - lists available export formats

Test Statistics

  • Total Test Suites: 8
  • Total Tests: 32+
  • Unit Tests: 25+
  • Integration Tests: 7+

Test Execution

Run all export tests:

npm test -- tests/unit/exports tests/integration/exports

Run specific test suite:

npm test -- tests/unit/exports/identity-map.test.ts
npm test -- tests/integration/exports/export-routes.test.ts

Known Issues

  1. Some tests may require database setup - ensure TEST_DATABASE_URL is configured
  2. Integration tests require test database with proper schema
  3. Some tests may timeout if database connection is slow

Next Steps

  1. Add E2E tests for complete export workflows
  2. Add performance tests for large batch exports
  3. Add property-based tests for format edge cases
  4. Add tests for export history tracking
  5. Add tests for metrics collection