import { describe, it, expect, beforeEach, afterEach } from "vitest"; import { transformVSCodeUrl } from "../vscode-url-helper"; describe("transformVSCodeUrl", () => { const originalWindowLocation = window.location; beforeEach(() => { // Mock window.location Object.defineProperty(window, "location", { value: { hostname: "example.com", }, writable: true, }); }); afterEach(() => { // Restore window.location Object.defineProperty(window, "location", { value: originalWindowLocation, writable: true, }); }); it("should return null if input is null", () => { expect(transformVSCodeUrl(null)).toBeNull(); }); it("should replace localhost with current hostname when they differ", () => { const input = "http://localhost:8080/?tkn=abc123&folder=/workspace"; const expected = "http://example.com:8080/?tkn=abc123&folder=/workspace"; expect(transformVSCodeUrl(input)).toBe(expected); }); it("should not modify URL if hostname is not localhost", () => { const input = "http://otherhost:8080/?tkn=abc123&folder=/workspace"; expect(transformVSCodeUrl(input)).toBe(input); }); it("should not modify URL if current hostname is also localhost", () => { // Change the mocked hostname to localhost Object.defineProperty(window, "location", { value: { hostname: "localhost", }, writable: true, }); const input = "http://localhost:8080/?tkn=abc123&folder=/workspace"; expect(transformVSCodeUrl(input)).toBe(input); }); it("should handle invalid URLs gracefully", () => { const input = "not-a-valid-url"; expect(transformVSCodeUrl(input)).toBe(input); }); });