文件
hyb-oa/server/tests/unit/routes/integrations.erp.procurement.test.js
T

60 行
1.8 KiB
JavaScript

const integrationsRoutes = require('../../../src/routes/integrations');
describe('Integrations procurement ERP route helpers', () => {
const {
canReadPurchaseRequest,
ensureProcurementTargetEligible,
normalizeProcurementTargets,
} = integrationsRoutes.__testables;
it('normalizes procurement targets in fixed order', () => {
expect(
normalizeProcurementTargets({
targets: ['archive_summary', 'commitment_journal', 'archive_summary'],
}),
).toEqual(['commitment_journal', 'archive_summary']);
});
it('respects purchase read permission rules', () => {
const purchaseRequest = {
applicant_id: 'employee-1',
submitter_id: 'employee-2',
};
expect(
canReadPurchaseRequest(
{ employee: { id: 'employee-1', permissionCodes: ['procurement.view_own'] } },
purchaseRequest,
),
).toBe(true);
expect(
canReadPurchaseRequest(
{ employee: { id: 'other', permissionCodes: ['procurement.view_own'] } },
purchaseRequest,
),
).toBe(false);
expect(
canReadPurchaseRequest(
{ employee: { id: 'other', permissionCodes: ['integration.manage', 'procurement.view_all'] } },
purchaseRequest,
),
).toBe(true);
});
it('rejects commitment target when purchase is not approved', () => {
expect(() =>
ensureProcurementTargetEligible('commitment_journal', {
purchaseRequest: { status: 'reviewing' },
}),
).toThrow('参数校验失败');
});
it('rejects archive targets when archive is missing', () => {
expect(() =>
ensureProcurementTargetEligible('accrual_journal', {
purchaseRequest: { status: 'approved', order_archive: null },
}),
).toThrow('参数校验失败');
});
});