230 lines
5.1 KiB
TypeScript
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();
|