UNPKG

@panoramax/web-viewer

Version:

Panoramax web viewer for geolocated pictures

122 lines (104 loc) 3.71 kB
import Basic from "../../../src/components/core/Basic"; import API from "../../../src/utils/API"; jest.mock("../../../src/utils/API"); jest.mock("../../../src/utils/i18n"); jest.mock("../../../src/utils/widgets"); jest.mock("../../../src/utils/utils"); jest.mock("../../../package.json", () => ({ version: "1.0.0", repository: { url: "https://example.com" } })); let basic; global.console = { info: jest.fn(), error: jest.fn(), warn: jest.fn(), log: global.console.log }; beforeEach(() => { basic = new Basic(true); }); afterEach(() => { jest.clearAllMocks(); }); describe("constructor", () => { it("should initialize with default values", () => { expect(basic.users).toEqual(["geovisio"]); expect(basic.mapstyle).toBeDefined(); expect(basic.lang).toBeNull(); expect(basic.endpoint).toBeNull(); expect(basic.picture).toBeNull(); expect(basic.sequence).toBeNull(); }); it("should log version info on initialization", () => { new Basic(true); expect(console.info).toHaveBeenCalledWith(expect.stringContaining("Panoramax Basic - Version 1.0.0")); }); it("should set up API when endpoint is provided", async () => { basic.endpoint = "https://api.example.com"; basic.attributeChangedCallback("endpoint", null, "https://api.example.com"); expect(API).toHaveBeenCalledWith("https://api.example.com", expect.any(Object)); }); }); describe("attributeChangedCallback", () => { it("should dispatch select event when picture or sequence changes", () => { const eventSpy = jest.spyOn(basic, "dispatchEvent"); basic.attributeChangedCallback("picture", null, "new-pic-id"); expect(eventSpy).toHaveBeenCalledWith(expect.any(CustomEvent)); eventSpy.mockRestore(); }); }); describe("getClassName", () => { it("works", () => { expect(basic.getClassName()).toBe("Basic"); }); }); describe("select", () => { it("works", () => { basic.select("new-seq-id", "new-pic-id"); expect(basic.picture).toBe("new-pic-id"); expect(basic.sequence).toBe("new-seq-id"); }); }); describe("offsetWidth", () => { it("works", () => { basic.offsetWidth = 500; expect(basic.isWidthSmall()).toBe(true); basic.offsetWidth = 600; expect(basic.isWidthSmall()).toBe(false); }); }); describe("offsetHeight", () => { it("works", () => { basic.offsetHeight = 300; expect(basic.isHeightSmall()).toBe(true); basic.offsetHeight = 500; expect(basic.isHeightSmall()).toBe(false); }); }); describe("getSubComponentsNames", () => { it("works", () => { expect(basic.getSubComponentsNames()).toEqual(["loader", "api"]); }); }); describe("addEventListener", () => { it("should add event listener for standard events", () => { const listener = jest.fn(); basic.addEventListener("ready", listener); basic.dispatchEvent(new CustomEvent("ready")); expect(listener).toHaveBeenCalled(); }); it("should add event listener with options", () => { const listener = jest.fn(); basic.addEventListener("once-event", listener, { once: true }); basic.dispatchEvent(new CustomEvent("once-event")); basic.dispatchEvent(new CustomEvent("once-event")); expect(listener).toHaveBeenCalledTimes(1); }); it("should wait for sub-component to be available", () => { const listener = jest.fn(); global.setTimeout = jest.fn(); basic.getSubComponentsNames = () => ["loader", "api", "map"]; basic.map = null; basic.addEventListener("map:move", listener); expect(global.setTimeout).toHaveBeenCalled(); }); it("adds listener to basic if no sub-component matches prefix", () => { const listener = jest.fn(); basic.addEventListener("unknown:event", listener); basic.dispatchEvent(new CustomEvent("unknown:event")); expect(listener).toHaveBeenCalled(); }); });