dees-document/test/test.ts
2023-10-17 12:00:36 +02:00

222 lines
5.0 KiB
TypeScript

import * as plugins from './plugins.js';
import * as paths from './paths.js';
import { expect, tap } from '@push.rocks/tapbundle';
import * as deesDocumentServer from '../ts/index.js';
let testPdfServiceInstance: deesDocumentServer.PdfService;
const testLetterData: plugins.tsclass.business.ILetter = {
accentColor: null,
type: 'invoice',
date: null,
needsCoverSheet: true,
objectActions: [],
pdf: null,
content: {
invoiceData: {
id: 'XX-CLIENT-48765',
reverseCharge: true,
dueInDays: 30,
billedBy: {
address: null,
description: null,
name: 'Some Service GmbH',
type: null,
customerNumber: null,
email: null,
facebookUrl: null,
fax: null,
legalEntity: null,
sepaConnection: {
bic: 'BPOTBEB1',
iban: 'BE72000000001616',
},
},
billedTo: null,
status: null,
deliveryDate: new Date().getTime(),
periodOfPerformance: null,
printResult: null,
items: [
{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
currency: 'EUR',
},
],
},
contractData: {
contractDate: Date.now(),
id: 'LL-CONTRACT-48765',
},
textData: [],
timesheetData: '',
},
from: {
name: 'PdfService Test Company',
type: 'company',
description: 'doing pdf stuff',
address: {
streetName: 'Awesome Street',
houseNumber: '5',
city: 'Bremen',
country: 'Germany',
postalCode: '28359',
},
sepaConnection: {
bic: 'BPOTBEB1',
iban: 'BE72000000001616',
},
},
to: {
name: 'Awesome To Company',
type: 'company',
description: 'a company that does stuff',
address: {
streetName: 'Awesome Street',
houseNumber: '5',
city: 'Bremen',
country: 'Germany',
postalCode: '28359',
},
},
incidenceId: null,
language: null,
legalContact: null,
logoUrl: null,
pdfAttachments: null,
subject: 'Invoice XX-CLIENT-48765',
versionInfo: {
type: 'final',
version: '1.0.0',
},
};
tap.test('should create a document from an invoice', async () => {
testPdfServiceInstance = new deesDocumentServer.PdfService({});
await testPdfServiceInstance.start();
expect(testPdfServiceInstance).toBeInstanceOf(deesDocumentServer.PdfService);
});
tap.test('should create an invoice', async () => {
let counter = 0;
const saveResult = async (letterDataArg: plugins.tsclass.business.ILetter) => {
const pdfResult = await testPdfServiceInstance.createPdfFromLetterObject(letterDataArg);
await plugins.smartfile.memory.toFs(Buffer.from(pdfResult.buffer), plugins.path.join(paths.nogitDir, `test-${counter++}.pdf`));
}
await saveResult(testLetterData);
await saveResult({
...testLetterData,
versionInfo: {
type: 'draft',
version: '1.0.0',
}
});
testLetterData.content.invoiceData.items = [
{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
currency: 'EUR',
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
currency: 'EUR',
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
currency: 'EUR',
},{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
currency: 'EUR',
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
currency: 'EUR',
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
currency: 'EUR',
},{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
currency: 'EUR',
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
currency: 'EUR',
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
currency: 'EUR',
},{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
currency: 'EUR',
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
currency: 'EUR',
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
currency: 'EUR',
},
],
await saveResult({
...testLetterData,
})
});
tap.test('should stop the service', async () => {
await testPdfServiceInstance.stop();
});
tap.start();