UNPKG

terriajs

Version:

Geospatial data visualization platform.

178 lines (154 loc) 5.75 kB
import i18next from "i18next"; import { autorun, runInAction } from "mobx"; import WebMapTileServiceCatalogItem from "../../../../lib/Models/Catalog/Ows/WebMapTileServiceCatalogItem"; import Terria from "../../../../lib/Models/Terria"; describe("WebMapTileServiceCatalogItem", function () { let terria: Terria; let wmts: WebMapTileServiceCatalogItem; beforeEach(function () { terria = new Terria(); wmts = new WebMapTileServiceCatalogItem("test", terria); }); it("has a type", function () { expect(wmts.type).toBe("wmts"); }); it("derives getCapabilitiesUrl from url if getCapabilitiesUrl is not specifiied", function () { wmts.setTrait("definition", "url", "http://www.example.com"); expect(wmts.url).toBeDefined(); expect( wmts.getCapabilitiesUrl && wmts.getCapabilitiesUrl.indexOf(wmts.url || "undefined") === 0 ).toBeTruthy(); }); it("updates description from a GetCapabilities", async function () { runInAction(() => { wmts.setTrait("definition", "url", "test/WMTS/with_tilematrix.xml"); wmts.setTrait("definition", "layer", "Some_Layer1"); }); let description: string | undefined; const cleanup = autorun(() => { if (wmts.info !== undefined) { const descSection = wmts.info.find( (section) => section.name === i18next.t("models.webMapTileServiceCatalogItem.dataDescription") ); if ( descSection !== undefined && descSection.content !== undefined && descSection.content !== null ) { description = descSection.content; } } }); try { await wmts.loadMetadata(); expect(description).toBe("description foo bar baz"); } finally { cleanup(); } }); // it("correctly contstructs ImageryProvider with ResourceUrl", async function() { // runInAction(() => { // wmts.setTrait("definition", "url", "test/WMTS/with_tilematrix.xml"); // wmts.setTrait("definition", "layer", "Some_Layer1"); // }); // let mapItems: ImageryParts[] = []; // const cleanup = autorun(() => { // mapItems = wmts.mapItems.slice(); // }); // try { // await wmts.loadMapItems(); // expect(mapItems.length).toBe(1); // expect(mapItems[0].alpha).toBeCloseTo(0.8); // expect( // mapItems[0].imageryProvider instanceof WebMapTileServiceImageryProvider // ).toBeTruthy(); // if ( // mapItems[0].imageryProvider instanceof WebMapTileServiceImageryProvider // ) { // expect(mapItems[0].imageryProvider.url).toBe( // "https://some.provider/wmts/Some_Layer1/default/GoogleMapsCompatible_Level9/{TileMatrix}/{TileRow}/{TileCol}.png" // ); // } // } finally { // cleanup(); // } // }); // it("correctly contstructs ImageryProvider", async function() { // runInAction(() => { // wmts.setTrait("definition", "url", "test/WMTS/with_tilematrix.xml"); // wmts.setTrait("definition", "layer", "Some_Layer3"); // }); // let mapItems: ImageryParts[] = []; // const cleanup = autorun(() => { // mapItems = wmts.mapItems.slice(); // }); // try { // await wmts.loadMapItems(); // expect(mapItems.length).toBe(1); // expect(mapItems[0].alpha).toBeCloseTo(0.8); // expect( // mapItems[0].imageryProvider instanceof WebMapTileServiceImageryProvider // ).toBeTruthy(); // if ( // mapItems[0].imageryProvider instanceof WebMapTileServiceImageryProvider // ) { // const url = new URI(mapItems[0].imageryProvider.url) // .search("") // .toString(); // expect(url).toEqual("test/WMTS/with_tilematrix.xml"); // } // } finally { // cleanup(); // } // }); it("should properly generate tile url request", async function () { runInAction(() => { wmts.setTrait( "definition", "url", "test/WMTS/with_operation_metadata.xml" ); wmts.setTrait( "definition", "layer", "NWSHELF_ANALYSISFORECAST_PHY_004_013/cmems_mod_nws_phy_anfc_0.027deg-3D_PT1H-m_202309/vo" ); }); await wmts.loadMapItems(); expect(wmts.imageryProvider?.url).toBe( "http://wmts.marine.copernicus.eu/teroWmts?service=WMTS&version=1.0.0&request=GetTile" ); }); it("calculates correct tileMatrixSet", async function () { runInAction(() => { wmts.setTrait("definition", "url", "test/WMTS/with_tilematrix.xml"); wmts.setTrait("definition", "layer", "Some_Layer1"); }); await wmts.loadMapItems(); expect(wmts.tileMatrixSet).toBeDefined(); expect(wmts.tileMatrixSet!.id).toEqual("GoogleMapsCompatible_Level9"); expect(wmts.tileMatrixSet!.labels.length).toBe(10); expect(wmts.tileMatrixSet!.maxLevel).toBe(9); expect(wmts.tileMatrixSet!.minLevel).toBe(0); expect(wmts.tileMatrixSet!.tileWidth).toEqual(256); expect(wmts.tileMatrixSet!.tileHeight).toEqual(256); }); xit("non existing tile matrix set", async function () { runInAction(() => { wmts.setTrait("definition", "url", "test/WMTS/with_tilematrix.xml"); wmts.setTrait("definition", "layer", "Layer_With_Bad_Tilematrixset"); }); await wmts.loadMapItems(); expect(wmts.tileMatrixSet!.id).toEqual( "urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible" ); expect(wmts.tileMatrixSet!.labels.length).toBe(0); expect(wmts.tileMatrixSet!.maxLevel).toBe(0); expect(wmts.tileMatrixSet!.minLevel).toBe(0); expect(wmts.tileMatrixSet!.tileWidth).toEqual(256); expect(wmts.tileMatrixSet!.tileHeight).toEqual(256); }); });