import { describe, expect, it } from "vitest"; import ProveedorOSM from "../../src/utils/ubicacion/proveedorOSM.js"; describe("ProveedorOSM", () => { const p = new ProveedorOSM(); it("detecta URLs de openstreetmap.org", () => { expect(p.detecta("https://www.openstreetmap.org/#map=12/39.4699/-0.3763")).toBe(true); expect(p.detecta("https://openstreetmap.org/?mlat=41.38&mlon=2.17")).toBe(true); expect(p.detecta("https://www.google.com/maps")).toBe(false); }); it("extrae de mlat/mlon (enlace de marcador)", async () => { expect(await p.extrae("https://www.openstreetmap.org/?mlat=41.9794&mlon=2.8214")) .toEqual({ proveedor: "osm", lat: 41.9794, lng: 2.8214 }); }); it("prioriza mlat/mlon sobre el fragmento #map=", async () => { const r = await p.extrae("https://www.openstreetmap.org/?mlat=41.9794&mlon=2.8214#map=15/39.4699/-0.3763"); expect(r).toEqual({ proveedor: "osm", lat: 41.9794, lng: 2.8214 }); }); it("extrae del fragmento #map=zoom/lat/lng cuando no hay mlat/mlon", async () => { expect(await p.extrae("https://www.openstreetmap.org/#map=12/39.4699/-0.3763")) .toEqual({ proveedor: "osm", lat: 39.4699, lng: -0.3763 }); expect(await p.extrae("https://www.openstreet.org/#map=16.5/43.5321/-5.6556")) // zoom decimal .toEqual({ proveedor: "osm", lat: 43.5321, lng: -5.6556 }); }); it("sin mlat/mlon ni #map= → null", async () => { expect(await p.extrae("https://www.openstreetmap.org/way/123456")).toBeNull(); }); });