UNPKG

@terrestris/ol-util

Version:

A set of helper classes for working with openLayers

224 lines 10.3 kB
/* eslint-env jest*/ import OlLayerImage from 'ol/layer/Image'; import OlLayerTile from 'ol/layer/Tile'; import OlSourceImageWMS from 'ol/source/ImageWMS'; import OlSourceTileWMS from 'ol/source/TileWMS'; import OlSourceWMTS from 'ol/source/WMTS'; import OlWMTSTileGrid from 'ol/tilegrid/WMTS'; import CapabilitiesUtil from '../CapabilitiesUtil/CapabilitiesUtil'; import LayerUtil from './LayerUtil'; describe('LayerUtil', () => { it('is defined', () => { expect(LayerUtil).not.toBeUndefined(); }); describe('Static methods', () => { describe('#getLayerUrl', () => { it('returns the url of a supported layer/source type', () => { const layer1 = new OlLayerTile({ source: new OlSourceTileWMS({ url: 'https://ows.terrestris.de/osm-gray/service?', params: { LAYERS: 'OSM-WMS' } }), properties: { name: 'OSM-WMS' } }); const url1 = LayerUtil.getLayerUrl(layer1); expect(url1).toEqual('https://ows.terrestris.de/osm-gray/service?'); const layer2 = new OlLayerImage({ source: new OlSourceImageWMS({ url: 'https://ows.terrestris.de/osm-gray/service', params: { LAYERS: 'OSM-WMS' } }), properties: { name: 'OSM-WMS' } }); const url2 = LayerUtil.getLayerUrl(layer2); expect(url2).toEqual('https://ows.terrestris.de/osm-gray/service'); const layer3 = new OlLayerTile({ source: new OlSourceWMTS({ urls: ['https://ows.terrestris.de/osm-gray/service'], layer: 'test', matrixSet: 'test', tileGrid: new OlWMTSTileGrid({ matrixIds: [], resolutions: [], origin: [19, 9] }), style: 'default' }), properties: { name: 'OSM-WMS' } }); const url3 = LayerUtil.getLayerUrl(layer3); expect(url3).toEqual('https://ows.terrestris.de/osm-gray/service'); }); }); describe('#getExtentForLayer', () => { it('returns the extent of the given layer for GetCapabilities request version 1.3.0 (multiple layers)', async () => { const layer = new OlLayerTile({ source: new OlSourceTileWMS({ url: 'https://ows.terrestris.de/osm-gray/service?', params: { LAYERS: 'OSM-WMS' } }), properties: { name: 'OSM-WMS' } }); const mockImpl = jest.fn(); mockImpl.mockReturnValue({ Capability: { Layer: { Layer: [{ Name: 'OSM-WMS', // eslint-disable-next-line camelcase EX_GeographicBoundingBox: { westBoundLongitude: 1, southBoundLatitude: 2, eastBoundLongitude: 3, northBoundLatitude: 4 } }, { Name: 'Peter', // eslint-disable-next-line camelcase EX_GeographicBoundingBox: { westBoundLongitude: 5, southBoundLatitude: 6, eastBoundLongitude: 7, northBoundLatitude: 8 } }] } } }); const getWmsCapabilitiesByLayerSpy = jest.spyOn(CapabilitiesUtil, 'getWmsCapabilitiesByLayer').mockImplementation(mockImpl); const extent = await LayerUtil.getExtentForLayer(layer); expect(extent).toEqual([1, 2, 3, 4]); getWmsCapabilitiesByLayerSpy.mockRestore(); }); it('returns the extent of the given layer for GetCapabilities request version 1.3.0 (single layer)', async () => { const layer = new OlLayerTile({ source: new OlSourceTileWMS({ url: 'https://ows.terrestris.de/osm-gray/service?', params: { LAYERS: 'OSM-WMS' } }), properties: { name: 'OSM-WMS' } }); const mockImpl = jest.fn(); mockImpl.mockReturnValue({ Capability: { Layer: { Layer: { Name: 'OSM-WMS', // eslint-disable-next-line camelcase EX_GeographicBoundingBox: { westBoundLongitude: 1, southBoundLatitude: 2, eastBoundLongitude: 3, northBoundLatitude: 4 } } } } }); const getWmsCapabilitiesByLayerSpy = jest.spyOn(CapabilitiesUtil, 'getWmsCapabilitiesByLayer').mockImplementation(mockImpl); const extent = await LayerUtil.getExtentForLayer(layer); expect(extent).toEqual([1, 2, 3, 4]); getWmsCapabilitiesByLayerSpy.mockRestore(); }); it('returns the extent of the given layer for GetCapabilities request version 1.1.1', async () => { const layer = new OlLayerTile({ source: new OlSourceTileWMS({ url: 'https://ows.terrestris.de/osm-gray/service?', params: { LAYERS: 'OSM-WMS', VERSION: '1.1.1' } }), properties: { name: 'OSM-WMS' } }); const mockImpl = jest.fn(); mockImpl.mockReturnValue({ Capability: { Layer: { Layer: [{ Name: 'OSM-WMS', // eslint-disable-next-line camelcase LatLonBoundingBox: { minx: 1, miny: 2, maxx: 3, maxy: 4 } }] } } }); const getWmsCapabilitiesByLayerSpy = jest.spyOn(CapabilitiesUtil, 'getWmsCapabilitiesByLayer').mockImplementation(mockImpl); const extent = await LayerUtil.getExtentForLayer(layer); expect(extent).toEqual([1, 2, 3, 4]); getWmsCapabilitiesByLayerSpy.mockRestore(); }); }); describe('#mapOlLayerToInkmap', () => { it('exports WMS tile layer correctly', async () => { const layer = new OlLayerTile({ source: new OlSourceTileWMS({ url: 'https://ows.terrestris.de/osm-gray/service?', params: { LAYERS: 'OSM-WMS' } }), properties: { name: 'OSM-WMS layer' } }); const result = await LayerUtil.mapOlLayerToInkmap(layer); expect(result).toBeDefined(); expect(result.url).toEqual(layer?.getSource()?.getUrls().at(0)); expect(result.layerName).toEqual(layer?.getProperties()?.name); expect(result.type).toEqual('WMS'); expect(result.layer).toEqual(layer?.getSource()?.getParams().LAYERS); }); it('exports WMTS layers correctly', async () => { const layer3 = new OlLayerTile({ source: new OlSourceWMTS({ urls: ['https://ows.terrestris.de/osm-gray/service'], layer: 'test', matrixSet: 'test', tileGrid: new OlWMTSTileGrid({ matrixIds: [], resolutions: [], origin: [19, 9] }), style: 'default' }), properties: { name: 'OSM-WMS' } }); const result = await LayerUtil.mapOlLayerToInkmap(layer3); expect(result).toBeDefined(); expect(result.url).toEqual(layer3?.getSource()?.getUrls().at(0)); expect(result.layerName).toEqual(layer3?.getProperties()?.name); expect(result.type).toEqual('WMTS'); expect(result.layer).toEqual(layer3?.getSource()?.getLayer()); }); }); }); }); //# sourceMappingURL=LayerUtil.spec.js.map