- Campo universal de ubicación (Google Maps/Waze/OSM/coordenadas/dirección) sobre proveedores extensibles (src/utils/ubicacion) con resolver e inferencia inversa Nominatim (nombre/provincia pre-rellenados, alias cooficiales) - FAB flotante abajo a la derecha que abre la pasarela en un modal accesible (Escape, foco contenido, responsive); sin descripción ni puntuación; avisos de duplicado y filtro de palabras dentro del modal - Aviso PWA reposicionado: tarjeta abajo a la izquierda en móvil, botón compacto arriba a la izquierda en PC (no tapa el FAB) - Suite de pruebas: 88 unitarias/componente (vitest + RTL, offline) y 10 de integración (supertest + SQLite :memory: y Nominatim real opt-in) - CI: workflow de Gitea Actions con npm test + build en push/PR e integración manual
34 lines
1.5 KiB
JavaScript
34 lines
1.5 KiB
JavaScript
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();
|
|
});
|
|
});
|