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:
@@ -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);
|
||||
|
||||
54
utils/openInNewTab.test.js
Normal file
54
utils/openInNewTab.test.js
Normal 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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user