const test = require('node:test'); const assert = require('node:assert/strict'); const { validateAndNormalizeReportInput, toDatabaseRecord, } = require('../src/report-service'); function createResponseInfo() { return { code: 0, message: 'success', data: { reportId: 'report-001', status: 'SUCCESS', name: '测试报告', }, }; } test('validateAndNormalizeReportInput accepts response info with data.reportId', () => { const input = createResponseInfo(); const result = validateAndNormalizeReportInput(input); assert.equal(result.reportId, 'report-001'); assert.deepEqual(result.reportInfo, input); }); test('validateAndNormalizeReportInput accepts response info with data.report_id', () => { const input = { code: 0, data: { report_id: 'report-002', }, }; const result = validateAndNormalizeReportInput(input); assert.equal(result.reportId, 'report-002'); assert.deepEqual(result.reportInfo, input); }); test('validateAndNormalizeReportInput rejects response info without a report id', () => { assert.throws( () => validateAndNormalizeReportInput({ code: 0, data: {}, }), (error) => { assert.equal(error.code, 'VALIDATION_ERROR'); assert.match(error.message, /report[_ ]?id/i); return true; }, ); }); test('toDatabaseRecord maps response info into segmented_market_reports columns', () => { const normalized = validateAndNormalizeReportInput(createResponseInfo()); const record = toDatabaseRecord(normalized); assert.deepEqual(record, { report_id: 'report-001', report_info: { code: 0, message: 'success', data: { reportId: 'report-001', status: 'SUCCESS', name: '测试报告', }, }, }); });