UNPKG

@panoramax/web-viewer

Version:

Panoramax web viewer for geolocated pictures

124 lines (108 loc) 2.89 kB
import PresetsManager from "../../src/utils/PresetsManager"; const mockPresets = { "osm_traffic_sign": { "icon": "fas-directions", "tags": { "osm|traffic_sign": "*" }, "geometry": [ "point", "vertex" ] }, "osm_traffic_calming": { "icon": "temaki-diamond", "tags": { "osm|traffic_calming": "*" }, "geometry": [ "vertex" ] }, "osm_shop": { "icon": "maki-shop", "tags": { "osm|shop": "*" }, "geometry": [ "point", "area" ] }, }; // Mock des appels fetch global.fetch = jest.fn(() => Promise.resolve({ ok: true, json: () => Promise.resolve({}), }) ); beforeEach(() => { fetch.mockClear(); }); it("should initialize with default values", () => { const presetsManager = new PresetsManager(null, true); expect(presetsManager._ready).toBe(false); expect(presetsManager._presets).toBe(null); expect(presetsManager._translations).toEqual({}); }); it("should load translations and presets", async () => { const mockTranslationsEN = { en: { presets: { preset1: { name: "Preset 1" } } } }; const mockTranslationsFR = { fr: { presets: { preset1: { name: "Préréglage 1" } } } }; fetch.mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve(mockTranslationsEN), }) ).mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve(mockTranslationsFR), }) ).mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve(mockPresets), }) ); const presetsManager = new PresetsManager("fr"); await presetsManager.onceReady(); expect(presetsManager._translations.en).toEqual(mockTranslationsEN.en.presets); expect(presetsManager._translations.fr).toEqual(mockTranslationsFR.fr.presets); expect(presetsManager._presets).toEqual(mockPresets); expect(presetsManager._ready).toBe(true); }); it("should handle errors during load", async () => { global.console = { error: jest.fn() }; fetch.mockImplementation(() => Promise.resolve({ ok: false, }) ); const presetsManager = new PresetsManager(); await expect(presetsManager.onceReady()).rejects.toBeUndefined(); expect(presetsManager._ready).toBe(-1); }); it("should find the best matching preset", async () => { fetch.mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve({}), }) ).mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve({}), }) ).mockImplementationOnce(() => Promise.resolve({ ok: true, json: () => Promise.resolve(mockPresets), }) ); const presetsManager = new PresetsManager(); await presetsManager.onceReady(); const feature = { semantics: [{ key: "key1", value: "value1" }, { key: "key2", value: "value2" }] }; const bestPreset = await presetsManager.getPreset(feature); expect(bestPreset).toEqual(mockPresets.preset2); });