pdfkit/tests/unit/reference.spec.js
2019-01-07 20:51:06 -03:00

94 lines
2.2 KiB
JavaScript

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);
});
});