initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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);
|
||||
})
|
||||
});
|
||||
Reference in New Issue
Block a user