const models = require('vn-loopback/server/server').models; const axios = require('axios'); const stream = require('stream'); describe('docuware download()', () => { const userId = 9; const ticketId = 1; const ctx = { req: { accessToken: {userId: userId}, headers: {origin: 'http://localhost:5000'}, } }; const docuwareModel = models.Docuware; const fileCabinetName = 'deliveryNote'; beforeAll(() => { spyOn(docuwareModel, 'getFileCabinet').and.returnValue((new Promise(resolve => resolve(Math.random())))); spyOn(docuwareModel, 'getDialog').and.returnValue((new Promise(resolve => resolve(Math.random())))); }); it('should return error if file not exist', async() => { spyOn(docuwareModel, 'checkFile').and.returnValue(false); spyOn(axios, 'get').and.returnValue(new stream.PassThrough({objectMode: true})); let error; try { await models.Docuware.download(ctx, ticketId, fileCabinetName); } catch (e) { error = e.message; } expect(error).toEqual('The DOCUWARE PDF document does not exists'); }); it('should return the downloaded file if exist file ', async() => { spyOn(docuwareModel, 'checkFile').and.returnValue({}); spyOn(axios, 'get').and.returnValue(new stream.PassThrough({objectMode: true})); const result = await models.Docuware.download(ctx, ticketId, fileCabinetName); expect(result[1]).toEqual('application/pdf'); expect(result[2]).toEqual(`filename="${ticketId}.pdf"`); }); });