payroll-gateway-transform.test.mjs 1.4 KB

1234567891011121314151617181920212223
  1. import test from 'node:test';
  2. import assert from 'node:assert/strict';
  3. import { normalizeHistoricalReservationPreviewBase } from '../payroll-gateway-transform.mjs';
  4. const original = "async function historicalReservationPreview(context,input){return 'legacy';}\n";
  5. const legacy = "async function historicalReservationPreviewLegacy(context,input){return 'legacy';}\n";
  6. const broken = "async function historicalReservationPreviewLegacy(context,input){const co=payrollTenant(context,input),data=await historicalReservationPreviewLegacy(context,input),rows=await Psql.query('SELECT 1');return{...data,items:data.items.map(i=>i)};}\n";
  7. test('首次增量发布会保留一个旧预览入口', () => {
  8. const result = normalizeHistoricalReservationPreviewBase(original);
  9. assert.equal(result.includes('historicalReservationPreview(context,input)'), false);
  10. assert.equal(result.split('historicalReservationPreviewLegacy(context,input)').length - 1, 1);
  11. });
  12. test('重复增量发布会移除递归包装并保留真正的旧预览', () => {
  13. const result = normalizeHistoricalReservationPreviewBase(legacy + broken);
  14. assert.equal(result, legacy);
  15. assert.equal(result.includes('data=await historicalReservationPreviewLegacy'), false);
  16. });
  17. test('缺少历史预约预览入口时拒绝发布', () => {
  18. assert.throws(() => normalizeHistoricalReservationPreviewBase('function unrelated(){}'), /版本不兼容/);
  19. });