230 lines
5.1 KiB
TypeScript

import * as plugins from "./plugins.js";
import * as paths from "./paths.js";
import * as interfaces from "../ts_shared/interfaces/index.js";
import { expect, tap } from "@push.rocks/tapbundle";
import * as deesDocumentServer from "../ts/index.js";
let testPdfServiceInstance: deesDocumentServer.PdfService;
const testLetterData: plugins.tsclass.finance.TInvoice = {
type: "invoice",
invoiceType: "debitnote",
date: null,
objectActions: [],
pdf: null,
id: "XX-CLIENT-48765",
invoiceId: "XX-CLIENT-48765",
reverseCharge: true,
dueInDays: 30,
currency: "EUR",
notes: [],
status: null,
deliveryDate: new Date().getTime(),
periodOfPerformance: null,
printResult: null,
items: [
{
name: "Website Creation",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 0,
position: 1,
},
],
from: {
name: "PdfService Test Company",
type: "company",
status: "active",
foundedDate: { day: 1, month: 1, year: 2025 },
description: "doing pdf stuff",
address: {
streetName: "Awesome Street",
houseNumber: "5",
city: "Bremen",
country: "Germany",
postalCode: "28359",
},
sepaConnection: {
bic: "BPOTBEB1",
iban: "BE72000000001616",
},
registrationDetails: {
vatId: "",
registrationName: "",
registrationId: "",
},
},
to: {
name: "Awesome To Company",
type: "company",
status: "active",
foundedDate: { day: 1, month: 1, year: 2025 },
description: "a company that does stuff",
address: {
streetName: "Awesome Street",
houseNumber: "5",
city: "Bremen",
country: "Germany",
postalCode: "28359",
},
registrationDetails: {
vatId: "",
registrationName: "",
registrationId: "",
},
},
incidenceId: null,
language: null,
legalContact: 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.finance.TInvoice;
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: {},
});
await saveResult({
letterData: {
...testLetterData,
versionInfo: {
type: "draft",
version: "1.0.0",
},
},
documentSettings: {},
});
(testLetterData.items = [
{
name: "Website Creation",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 0,
position: 1,
},
{
name: "Hosting",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 19,
position: 2,
},
{
name: "Overnight Shipping",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 24,
position: 3,
},
{
name: "Website Creation",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 0,
position: 4,
},
{
name: "Hosting",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 19,
position: 5,
},
{
name: "Overnight Shipping",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 24,
position: 6,
},
{
name: "Website Creation",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 0,
position: 7,
},
{
name: "Hosting",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 19,
position: 8,
},
{
name: "Overnight Shipping",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 24,
position: 9,
},
{
name: "Website Creation",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 0,
position: 10,
},
{
name: "Hosting",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 19,
position: 11,
},
{
name: "Overnight Shipping",
unitQuantity: 1,
unitNetPrice: 1200,
unitType: "item",
vatPercentage: 24,
position: 12,
},
]),
await saveResult({
letterData: testLetterData,
documentSettings: {},
});
});
tap.test("should stop the service", async () => {
await testPdfServiceInstance.stop();
});
tap.start();