|
- 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([]);
- });
- });
|