const PDFReference = require('../../lib/reference').default; const PDFDocument = require('../../lib/document').default; const zlib = require('zlib'); describe('PDFReference', () => { let document; beforeEach(() => { document = new PDFDocument(); }); test('instantiated without data', () => { const ref = new PDFReference(document, 1); expect(ref.id).toBeDefined(); expect(ref.data).toBeDefined(); expect(ref.data).toBeInstanceOf(Object); }); test('instantiated with data', () => { const refData = { Pages: 0 }; const ref = new PDFReference(document, 1, refData); expect(ref.id).toBe(1); expect(ref.data).toBe(refData); }); test('written data of empty reference', done => { const dataLog = []; const expected = ['1 0 obj', '<<\n>>', 'endobj']; const ref = new PDFReference(document, 1); document._write = function(data) { dataLog.push(data); }; ref.finalize(); setTimeout(() => { expect(dataLog).toEqual(expected); done(); }, 1); }); test('written data of reference with uncompressed data', done => { const dataLog = []; const chunk = new Buffer('test'); const expected = [ '1 0 obj', `<< /Length ${chunk.length} >>`, 'stream', chunk, '\nendstream', 'endobj' ]; const ref = new PDFReference(document, 1); ref.compress = false; ref.write(chunk); document._write = function(data) { dataLog.push(data); }; ref.finalize(); setTimeout(() => { expect(dataLog).toEqual(expected); done(); }, 1); }); test('written data of reference with compressed data', done => { const dataLog = []; const chunk = new Buffer('test'); const compressed = zlib.deflateSync(chunk); const expected = [ '1 0 obj', `<< /Length ${compressed.length} /Filter /FlateDecode >>`, 'stream', compressed, '\nendstream', 'endobj' ]; const ref = new PDFReference(document, 1); ref.write(chunk); document._write = function(data) { dataLog.push(data); }; ref.finalize(); setTimeout(() => { expect(dataLog).toEqual(expected); done(); }, 1); }); });