MAP_VERSION = "1.0.12"

feat: Integrationstest für openInNewTab erfolgreich implementiert

- Mocking für Leaflet-Objekte (Marker, Polyline) erstellt.
- Tests hinzugefügt, die sicherstellen:
  - Marker-Links werden korrekt generiert und geöffnet.
  - Polyline-Links werden korrekt generiert und geöffnet.
  - Fehler ausgegeben werden, wenn kein gültiger Link gefunden wird.
- Jest-Konfiguration angepasst, um globale Objekte wie window zu mocken.
- Funktionalität und Tests erfolgreich überprüft.
This commit is contained in:
ISA
2024-12-06 14:18:05 +01:00
parent 6fa4d86cd1
commit df5289cc38
19 changed files with 57 additions and 1040 deletions

View File

@@ -3,7 +3,7 @@
export function openInNewTab(e, target) {
const url = new URL(window.location.origin);
const originWithoutPort = `${url.protocol}//${url.hostname}`; // Protokoll und Hostname, ohne Port
const BASE_URL = originWithoutPort;
let link;
// Prüfen, ob der Kontextmenü-Eintrag aufgerufen wird, ohne dass ein Marker oder Polyline direkt angesprochen wird
@@ -17,6 +17,7 @@ export function openInNewTab(e, target) {
if (target instanceof L.Marker && target.options.link) {
link = `${originWithoutPort}/talas5/devices/${target.options.link}`;
console.log("Link des Markers", link);
} else if (target instanceof L.Polyline) {
const idLD = target.options.idLD;
console.log("idLD der Linie", idLD);

View File

@@ -0,0 +1,54 @@
// utils/openInNewTab.test.js
import { openInNewTab } from "./openInNewTab";
// Leaflet manuell mocken
global.L = {
Marker: class {
constructor(options) {
this.options = options || {};
}
},
Polyline: class {
constructor(options) {
this.options = options || {};
}
},
};
describe("Integrationstest für openInNewTab", () => {
const mockWindowOpen = jest.fn();
beforeAll(() => {
global.window = Object.create(window);
window.open = mockWindowOpen;
delete window.location;
window.location = new URL("http://10.10.0.13");
});
afterEach(() => {
mockWindowOpen.mockClear();
});
it("soll den Link korrekt für einen Marker öffnen", () => {
const marker = new L.Marker({ link: "cpl.aspx?ver=35&kue=24&id=50922" });
openInNewTab(null, marker);
expect(mockWindowOpen).toHaveBeenCalledWith("http://10.10.0.13/talas5/devices/cpl.aspx?ver=35&kue=24&id=50922", "_blank");
});
it("soll den Link korrekt für eine Polyline öffnen", () => {
const polyline = new L.Polyline({ idLD: 50922 });
openInNewTab(null, polyline);
expect(mockWindowOpen).toHaveBeenCalledWith("http://10.10.0.13/talas5/devices/cpl.aspx?id=50922", "_blank");
});
it("soll einen Fehler ausgeben, wenn kein Link gefunden wird", () => {
console.error = jest.fn();
openInNewTab();
expect(console.error).toHaveBeenCalledWith("Fehler: Es wurde kein gültiger Link gefunden.");
expect(mockWindowOpen).not.toHaveBeenCalled();
});
});