pdfkit/tests/unit/reference.spec.js

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