123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- 'use strict'
- /* global describe, it, expect, jsPDF, comparePdf */
- /**
- * Standard spec tests
- *
- * These tests return the datauristring so that reference files can be generated.
- * We compare the exact output.
- */
- describe('Standard Text', () => {
- it('should load', () => {
- // assertions here]
- expect(typeof jsPDF).toBe('function')
- })
- it('should generate blank page', () => {
- const doc = jsPDF()
- comparePdf(doc.output(), 'blank.pdf', 'text')
- })
- it('should allow text insertion', () => {
- const doc = jsPDF()
- doc.text(10, 10, 'This is a test!')
- comparePdf(doc.output(), 'standard.pdf', 'text')
- })
- it('should allow text insertion at an angle', () => {
- const doc = jsPDF()
- doc.text(20, 20, 'This is a test!', null, 20)
- comparePdf(doc.output(), 'angle.pdf', 'text')
- })
- it('should render different font faces', () => {
- const doc = jsPDF()
- doc.text(20, 20, 'This is the default font.')
- doc.setFont('courier')
- doc.setFontType('normal')
- doc.text(20, 30, 'This is courier normal.')
- doc.setFont('times')
- doc.setFontType('italic')
- doc.text(20, 40, 'This is times italic.')
- doc.setFont('helvetica')
- doc.setFontType('bold')
- doc.text(20, 50, 'This is helvetica bold.')
- doc.setFont('courier')
- doc.setFontType('bolditalic')
- doc.text(20, 60, 'This is courier bolditalic.')
- comparePdf(doc.output(), 'font-faces.pdf', 'text')
- })
- it('should support multiple pages', () => {
- const doc = jsPDF()
- doc.text(20, 20, 'Hello world!')
- doc.text(20, 30, 'This is client-side JavaScript, pumping out a PDF.')
- doc.addPage()
- doc.text(20, 20, 'Do you like that?')
- comparePdf(doc.output(), 'two-page.pdf', 'text')
- })
- it('should support different size fonts', () => {
- const doc = jsPDF()
- doc.setFontSize(22)
- doc.text(20, 20, 'This is a title')
- doc.setFontSize(16)
- doc.text(20, 30, 'This is some normal sized text underneath.')
- comparePdf(doc.output(), 'different-sizes.pdf', 'text')
- })
- it('should support multiline text', () => {
- const doc = jsPDF()
- doc.text(20, 20, `This is a line
- break`)
- comparePdf(doc.output(), 'line-break.pdf', 'text')
- })
- it('should support strokes', () => {
- const doc = jsPDF()
- doc.text('Stroke on', 20, 20, { stroke: true })
- doc.text('Stroke on', 20, 40, { stroke: true })
- doc.text('Stroke off', 20, 60, { stroke: false })
- doc.text('Stroke on', 20, 80, { stroke: true })
- comparePdf(doc.output(), 'stroke.pdf', 'text')
- })
- // @TODO: Implement passing color as a name
- it('should display two red lines of text', () => {
- const doc = jsPDF()
- doc.setTextColor('#FF0000')
- doc.text('Red on', 20, 20)
- doc.setTextColor(255, 0, 0)
- doc.text('Red on', 20, 40)
- comparePdf(doc.output(), 'color.pdf', 'text')
- })
- it('should display one line of red, one black', () => {
- const doc = jsPDF()
- doc.setTextColor('#FF0000')
- doc.text('Red', 20, 20)
- doc.setTextColor('#000000')
- doc.text('Black', 20, 40)
- comparePdf(doc.output(), 'red-black.pdf', 'text')
- })
- // @TODO: Document alignment
- it('should center align text', () => {
- const doc = jsPDF()
- doc.setFont('times')
- doc.setFontType('normal')
- doc.text(105, 80, 'This is centred text.', null, null, 'center')
- doc.text(105, 90, 'And a little bit more underneath it.', null, null, 'center')
- doc.text(200, 100, 'This is right aligned text', null, null, 'right')
- doc.text(200, 110, 'And some more', null, null, 'right')
- doc.text(20, 120, 'Back to left')
- comparePdf(doc.output(), 'alignment.pdf', 'text')
- })
- it('should throw an error if not a string', () => {
- expect(() => {
- const doc = jsPDF()
- doc.text(10, 10, 43290943)
- }).toThrow(new Error('Type of text must be string or Array. "43290943" is not recognized.'))
- })
- it('should throw an error when passed incorrect alignment', () => {
- expect(() => {
- const doc = jsPDF()
- doc.text(105, 80, 'This is text with a moose alignment.', null, null, 'moose')
- }).toThrow(new Error('Unrecognized alignment option, use "center" or "right".'))
- })
- it('should render letter spaced text', () => {
- const doc = jsPDF()
- doc.lstext('hello', 10, 10, 2)
- doc.lstext('hello', 10, 20, 5)
- doc.lstext('hello', 10, 30, 10)
- comparePdf(doc.output(), 'letter-spacing.pdf', 'text')
- })
- })
|