import { container } from 'tsyringe'; import path from 'path'; import { promises as fs } from 'fs'; import { Readable } from 'stream'; import AppError from '../../../erros/AppError'; import ExtractDataPDFMapaFolhaService from '../../../services/mapaFolha/ExtractDataPDFMapaFolhaService'; import reciboPagamentoData from '../../resources/recibo-pagamento-data.json'; describe('Mapa Folha - ExtractDataPDFMapaFolhaService', () => { afterEach(() => { jest.restoreAllMocks(); }); it('Deve ser capaz de extrair os dados do PDF do mapa da folha ', async () => { const extractDataPDFMapaFolha = container.resolve(ExtractDataPDFMapaFolhaService); const filePath = path.resolve(__dirname, '..', '..', 'resources', 'recibo-pagamento.pdf'); const file = await fs.readFile(filePath); const { size } = await fs.stat(filePath); const readableStream = new Readable(); const fileMulter: Express.Multer.File = { fieldname: 'pdf', originalname: 'report-mapa-folha.pdf', encoding: 'utf-8', mimetype: 'application/pdf', size, stream: readableStream, destination: filePath, filename: 'report-mapa-folha.pdf', path: filePath, buffer: file, }; const data = await extractDataPDFMapaFolha.execute({ files: [fileMulter], }); expect(data).toEqual(expect.arrayContaining(reciboPagamentoData)); }); it('Deve gerar uma exceção caso não seja passado o arquivo ', async () => { const params = {} as { files: Express.Multer.File[] }; const extractDataPDFMapaFolha = container.resolve(ExtractDataPDFMapaFolhaService); await expect(extractDataPDFMapaFolha.execute(params)).rejects.toBeInstanceOf(AppError); }); it('Deve gerar uma exceção caso o arquivo não seja um PDF 1', async () => { const extractDataPDFMapaFolha = container.resolve(ExtractDataPDFMapaFolhaService); const filePath = path.resolve(__dirname, '..', '..', 'resources', 'recibo-pagamento-data.json'); const file = await fs.readFile(filePath); const { size } = await fs.stat(filePath); const readableStream = new Readable(); const fileMulter: Express.Multer.File = { fieldname: 'pdf', originalname: 'recibo-pagamento-data.json', encoding: 'utf-8', mimetype: 'application/json', size, stream: readableStream, destination: filePath, filename: 'recibo-pagamento-data.json', path: filePath, buffer: file, }; await expect(extractDataPDFMapaFolha.execute({ files: [fileMulter] })).rejects.toBeInstanceOf( AppError, ); }); it('Não deve gerar uma exceção caso receba um PDF diferente do experado ', async () => { const extractDataPDFMapaFolha = container.resolve(ExtractDataPDFMapaFolhaService); const filePath = path.resolve(__dirname, '..', '..', 'resources', 'empty-pdf.pdf'); const file = await fs.readFile(filePath); const { size } = await fs.stat(filePath); const readableStream = new Readable(); const fileMulter: Express.Multer.File = { fieldname: 'pdf', originalname: 'empty-pdf.pdf', encoding: 'utf-8', mimetype: 'application/pdf', size, stream: readableStream, destination: filePath, filename: 'empty-pdf.pdf', path: filePath, buffer: file, }; const data = await extractDataPDFMapaFolha.execute({ files: [fileMulter], }); expect(data).toEqual([]); }); });