unit tests part 5

This commit is contained in:
Christopher Hase 2025-03-31 15:15:22 +02:00
parent a2af5b23a3
commit 7b1295bb02
3 changed files with 11 additions and 19 deletions

View file

@ -1,9 +1,11 @@
import { html } from "./broker"; import { html } from "./broker";
import { test, beforeAll, afterAll } from "@jest/globals"; import { test, beforeAll, afterAll } from "@jest/globals";
/*jest.useFakeTimers();
beforeAll(() => { beforeAll(() => {
jest.spyOn(console, "log").mockImplementation(() => {}); jest.spyOn(console, "log").mockImplementation(() => {});
}); });*/
test("Generate HTML for hexagram", () => { test("Generate HTML for hexagram", () => {
expect(html("Hexagram No. 45 ䷬\nGathering Together [Massing]\n萃 (cuì)")) expect(html("Hexagram No. 45 ䷬\nGathering Together [Massing]\n萃 (cuì)"))
@ -20,6 +22,6 @@ test("Generate HTML for images", () => {
.toBe("<p><h3>Images:</h3>Over the earth, the lake:<br>The image of Gathering Together.<br>Thus the superior man renews his weapons<br>In order to meet the unforseen.<br></p></div>"); .toBe("<p><h3>Images:</h3>Over the earth, the lake:<br>The image of Gathering Together.<br>Thus the superior man renews his weapons<br>In order to meet the unforseen.<br></p></div>");
}); });
afterAll(() => { /*afterAll(() => {
(console.log as jest.Mock).mockRestore(); (console.log as jest.Mock).mockRestore();
}); });*/

View file

@ -94,7 +94,7 @@ async function sendEmail(content: string) {
//Calculate the time for the next execution of the main process, depending on configuration. //Calculate the time for the next execution of the main process, depending on configuration.
//Returns the time of the next process loop. //Returns the time of the next process loop.
function calculateNextRunDate(daysInterval: number, timeOfDay: string): Date { function calculateNextRunDate(daysInterval: number, timeOfDay: string): Date {
/*const currentDate = new Date(); const currentDate = new Date();
// Splitte die Uhrzeit in Stunden und Minuten // Splitte die Uhrzeit in Stunden und Minuten
const [hours, minutes] = timeOfDay.split(':').map(Number); const [hours, minutes] = timeOfDay.split(':').map(Number);
@ -110,11 +110,6 @@ function calculateNextRunDate(daysInterval: number, timeOfDay: string): Date {
// Berechne das Datum für den nächsten Ausführungszeitpunkt unter Berücksichtigung von X Tagen // Berechne das Datum für den nächsten Ausführungszeitpunkt unter Berücksichtigung von X Tagen
currentDate.setDate(currentDate.getDate() + daysInterval); currentDate.setDate(currentDate.getDate() + daysInterval);
return currentDate;*/
//TODO: JUST FOR DEBUGGING!!!
const currentDate = new Date();
currentDate.setMinutes(currentDate.getMinutes() + 2);
return currentDate; return currentDate;
} }
@ -125,7 +120,7 @@ function scheduleNextRun(nextRunDate: Date) {
if (timeUntilNextRun > 0) { if (timeUntilNextRun > 0) {
setTimeout(() => { setTimeout(() => {
console.log('Prozess wird ausgeführt!'); console.log('Next iteration of Process was scheduled!');
//run the main process //run the main process
executeCommand(); executeCommand();
@ -185,7 +180,7 @@ function parse(input: string): Node {
function render(node: Node): string { function render(node: Node): string {
if (node == undefined) { if (node == undefined) {
console.log("...finished...") console.log("Rendering of nodes finished!")
return ""; return "";
} }
@ -197,19 +192,18 @@ function render(node: Node): string {
switch (node.type) { switch (node.type) {
case "Root": case "Root":
return render(node.child!); return render(node.child!);
case "Hexagram": case "Hexagram":
node.value = node.value?.replace("<h1>", "<div style=\"border: 1px dotted gray; border-radius: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 10px; width: auto; display: inline-block; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\"><h1>"); node.value = node.value?.replace("<h1>", "<div style=\"border: 1px dotted gray; border-radius: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 10px; width: auto; display: inline-block; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\"><h1>");
node.value = node.value?.replace("</h1>", "</h1><div style=\"border: 1px solid gray; border-radius: 25px; padding-left: 30px; padding-right: 30px; padding-top: 20px; width: auto; display: inline-block; text-align: center; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\"><h2>"); node.value = node.value?.replace("</h1>", "</h1><div style=\"border: 1px solid gray; border-radius: 25px; padding-left: 30px; padding-right: 30px; padding-top: 20px; width: auto; display: inline-block; text-align: center; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\"><h2>");
node.value = node.value?.replace("<br>", " - "); node.value = node.value?.replace("<br>", " - ");
outputHTML = "<br><p>" + node.value + "</h2></div></p>"; outputHTML = "<br><p>" + node.value + "</h2></div></p>";
outputHTML = outputHTML + render(node.child!); outputHTML = outputHTML + render(node.child!);
return outputHTML; return outputHTML;
case "Images": case "Images":
outputHTML = "<p>" + node.value + "</p></div>"; //EXTRA closing div outputHTML = "<p>" + node.value + "</p></div>"; //EXTRA closing div (was opened at beginning of hexagram)
outputHTML = outputHTML + render(node.child!); outputHTML = outputHTML + render(node.child!);
return outputHTML; return outputHTML;
case "ChangingLines" : case "ChangingLines" :
@ -218,16 +212,12 @@ function render(node: Node): string {
//outputHTML = "<br><p><div style=\"border: 1px dashed gray; border-radius: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: auto; display: inline-block; color: gray; text-align: center; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\">" + node.value + "</div></p><br>"; //outputHTML = "<br><p><div style=\"border: 1px dashed gray; border-radius: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: auto; display: inline-block; color: gray; text-align: center; box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);\">" + node.value + "</div></p><br>";
outputHTML = "<br><br><p><div style=\"padding-left: 20px; padding-right: 20px; padding-top: 20px; display: inline-block; color: gray; text-align: center;\">" + node.value + "</div></p><br>"; outputHTML = "<br><br><p><div style=\"padding-left: 20px; padding-right: 20px; padding-top: 20px; display: inline-block; color: gray; text-align: center;\">" + node.value + "</div></p><br>";
outputHTML = outputHTML + render(node.child!); outputHTML = outputHTML + render(node.child!);
return outputHTML; return outputHTML;
default: default:
outputHTML = "<p>" + node.value + "</p>"; outputHTML = "<p>" + node.value + "</p>";
outputHTML = outputHTML + render(node.child!); outputHTML = outputHTML + render(node.child!);
return outputHTML; return outputHTML;
} }
} }

View file

@ -3,7 +3,7 @@
"version": "1.0.0", "version": "1.0.0",
"main": "broker.js", "main": "broker.js",
"scripts": { "scripts": {
"test": "jest" "test": "jest --runInBand --detectOpenHandles --force-exit"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",