dees-document/test/test.ts

242 lines
5.4 KiB
TypeScript
Raw Permalink Normal View History

2023-10-16 16:28:12 +00:00
import * as plugins from './plugins.js';
import * as paths from './paths.js';
import * as interfaces from '../ts/interfaces/index.js';
2023-10-16 16:28:12 +00:00
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,
currency: 'EUR',
notes: [],
type: 'debitnote',
2023-10-16 16:28:12 +00:00
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,
position: 1,
2023-10-16 16:28:12 +00:00
},
],
},
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 (optionsArg: {
letterData: plugins.tsclass.business.ILetter;
documentSettings: interfaces.IDocumentSettings;
}) => {
const pdfResult = await testPdfServiceInstance.createPdfFromLetterObject(optionsArg);
await plugins.smartfile.memory.toFs(
Buffer.from(pdfResult.buffer),
plugins.path.join(paths.nogitDir, `test-${counter++}.pdf`)
);
};
await saveResult({
letterData: testLetterData,
documentSettings: {},
});
2023-10-16 16:28:12 +00:00
await saveResult({
letterData: {
...testLetterData,
versionInfo: {
type: 'draft',
version: '1.0.0',
},
},
documentSettings: {},
2023-10-16 16:28:12 +00:00
});
(testLetterData.content.invoiceData.items = [
2023-10-16 16:28:12 +00:00
{
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
position: 1,
2023-10-16 16:28:12 +00:00
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
position: 2,
2023-10-16 16:28:12 +00:00
},
2023-10-17 10:00:36 +00:00
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
position: 3,
},
{
2023-10-17 10:00:36 +00:00
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
position: 4,
2023-10-17 10:00:36 +00:00
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
position: 5,
2023-10-17 10:00:36 +00:00
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
position: 6,
},
{
2023-10-17 10:00:36 +00:00
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
position: 7,
2023-10-17 10:00:36 +00:00
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
position: 8,
2023-10-17 10:00:36 +00:00
},
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
position: 9,
},
{
2023-10-17 10:00:36 +00:00
name: 'Website Creation',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 0,
position: 10,
2023-10-17 10:00:36 +00:00
},
{
name: 'Hosting',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 19,
position: 11,
2023-10-17 10:00:36 +00:00
},
2023-10-16 16:28:12 +00:00
{
name: 'Overnight Shipping',
unitQuantity: 1,
unitNetPrice: 1200,
unitType: 'item',
vatPercentage: 24,
position: 12,
2023-10-16 16:28:12 +00:00
},
]),
await saveResult({
letterData: testLetterData,
documentSettings: {},
});
2023-10-16 16:28:12 +00:00
});
tap.test('should stop the service', async () => {
await testPdfServiceInstance.stop();
});
tap.start();