Files
2026-08-11 15:14:02 +02:00

52 lines
2.0 KiB
JavaScript

const request = require('supertest');
const path = require('path');
const fs = require('fs');
const os = require('os');
const { app } = require('../src/app');
const services = require('../src/services');
jest.mock('../src/services'); // jest uses fake/dummy functions instead of the real ones
describe('POST /api/documents', () => {
let dummyFileExcel;
let dummyFilePdf;
beforeAll(() => {
dummyFileExcel = path.join(os.tmpdir(), 'test_file.xlsx');
dummyFilePdf = path.join(os.tmpdir(), 'test_file.pdf');
fs.writeFileSync(dummyFileExcel, 'dummy file excel content');
fs.writeFileSync(dummyFilePdf, 'dummy pdf file content');
});
afterAll(() => {
if (fs.existsSync(dummyFileExcel)) fs.unlinkSync(dummyFileExcel);
if (fs.existsSync(dummyFilePdf)) fs.unlinkSync(dummyFilePdf);
});
it('should process files and return status 200 when helpers succeed', async() => {
// this tells the fake functions what to return
services.splitExcelFile.mockResolvedValue(5); // Returns 5 rows
services.splitPDF.mockResolvedValue(['/tmp/page1.pdf']); // Returns 1 temp file
services.initializeSalesforceConnection.mockResolvedValue(); // Simulates success
services.attachPdfToAccount.mockResolvedValue(); // Simulates success
// this makes test request to Express
const response = await request(app)
.post('/api/documents')
.field('title', 'Quarterly Report')
.attach('documents', dummyFileExcel)
.attach('documents', dummyFilePdf);
// assertions => verify express responded properly and called our service
expect(response.statusCode).toBe(200);
expect(response.body).toEqual({
ok: true,
message: 'Files uploaded successfully!'
});
// Verify helpers were actually called
expect(services.splitExcelFile).toHaveBeenCalledTimes(1);
expect(services.splitPDF).toHaveBeenCalledTimes(1);
expect(services.initializeSalesforceConnection).toHaveBeenCalledTimes(1);
expect(services.cleanUp).toHaveBeenCalledTimes(2);
})
});