Files
accounted/lib/invoices/__tests__/pdf-filename.test.ts
T
Mattsson 321e684523 Fix/usr fdbck ch (#1105)
* fix(privacy): mask voucher amounts in session replays

* fix: persist transaction source filter

* fix: clarify invoice filenames and booking previews

* fix: truncate long uploaded filenames

* feat: add invoice delivery history

* fix: harden invoice delivery history

* fix: include invoice deliveries in full archive
2026-07-22 18:49:57 +02:00

69 lines
2.3 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { invoicePdfFilename } from '../pdf-filename'
describe('invoicePdfFilename', () => {
it('includes company, customer, document type, number, and invoice date', () => {
expect(invoicePdfFilename({
companyName: 'Oppy',
customerName: 'Kund AB',
invoiceNumber: '2621',
invoiceDate: '2026-07-21',
})).toBe('Oppy x Kund AB Faktura nr 2621 20260721.pdf')
})
it('uses the correct label for credit notes and other document types', () => {
const base = {
companyName: 'Oppy',
customerName: 'Kund AB',
invoiceNumber: '42',
invoiceDate: '2026-07-21',
}
expect(invoicePdfFilename({ ...base, isCreditNote: true }))
.toContain('Kreditfaktura nr 42')
expect(invoicePdfFilename({ ...base, documentType: 'proforma' }))
.toContain('Proformafaktura nr 42')
expect(invoicePdfFilename({ ...base, documentType: 'delivery_note' }))
.toContain('Följesedel nr 42')
})
it('keeps drafts identifiable without inventing an invoice number', () => {
expect(invoicePdfFilename({
companyName: 'Oppy',
customerName: 'Kund AB',
invoiceId: 'bbbbbbbb-1111-2222-3333-cccccccccccc',
invoiceDate: '2026-07-21',
})).toBe('Oppy x Kund AB Faktura utkast-bbbbbbbb 20260721.pdf')
})
it('removes characters that are unsafe in cross-platform filenames', () => {
expect(invoicePdfFilename({
companyName: 'Oppy / Sverige',
customerName: 'Kund: "Nord" * AB',
invoiceNumber: '../26/21',
invoiceDate: '2026-07-21',
})).toBe('Oppy Sverige x Kund Nord AB Faktura nr .. 26 21 20260721.pdf')
})
it('falls back when company and customer names are empty', () => {
expect(invoicePdfFilename({
companyName: ' ',
customerName: null,
invoiceNumber: '2621',
invoiceDate: '2026-07-21',
})).toBe('Företag x Kund Faktura nr 2621 20260721.pdf')
})
it('keeps multibyte filenames within common filesystem byte limits', () => {
const filename = invoicePdfFilename({
companyName: '🚀'.repeat(60),
customerName: '漢'.repeat(60),
invoiceNumber: '2621',
invoiceDate: '2026-07-21',
})
expect(Buffer.byteLength(filename, 'utf8')).toBeLessThanOrEqual(255)
expect(filename).toMatch(/Faktura nr 2621 20260721\.pdf$/)
})
})