@terrestris/ol-util
Version:
A set of helper classes for working with openLayers
98 lines • 3.97 kB
JavaScript
/* eslint-env jest*/
import shpwrite from '@mapbox/shp-write';
import { FileUtil } from '../index';
import TestUtil from '../TestUtil';
import geoJson from './federal-states-ger.json';
const geoJson2 = {
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [47, -11]
},
properties: {
song: 'If you have ghosts'
}
}]
};
describe('FileUtil', () => {
const geoJsonFile = new File([JSON.stringify(geoJson)], 'geo.json', {
type: 'application/json',
lastModified: new Date().getMilliseconds()
});
let map;
it('is defined', () => {
expect(FileUtil).not.toBeUndefined();
});
describe('Static methods', () => {
beforeEach(() => {
map = TestUtil.createMap();
});
afterEach(() => {
TestUtil.removeMap(map);
});
describe('#addGeojsonLayer', () => {
it('adds a layer from a geojson string', () => {
expect.assertions(2);
return new Promise((resolve) => {
const layers = map.getLayers();
layers.on('add', (event) => {
const layer = event.element;
expect(layers.getLength()).toBe(2);
expect(layer.getSource()?.getFeatures().length).toBe(16);
resolve(true);
});
FileUtil.addGeojsonLayer(JSON.stringify(geoJson), map);
});
});
});
describe('#addGeojsonLayerFromFile', () => {
it('reads the geojson file and adds a layer to the map', () => {
expect.assertions(2);
return new Promise((resolve) => {
const layers = map.getLayers();
layers.on('add', (event) => {
const layer = event.element;
expect(layers.getLength()).toBe(2);
expect(layer.getSource()?.getFeatures().length).toBe(16);
resolve(true);
});
FileUtil.addGeojsonLayerFromFile(geoJsonFile, map);
});
});
});
describe('#addShpLayerFromFile', () => {
it('reads the shp file and adds a layer to the map', async () => {
const shpBuffer = await shpwrite.zip(geoJson2, {
outputType: 'arraybuffer',
compression: 'STORE'
});
const shpFile = new File([new Blob([shpBuffer])], 'geo.zip', {
type: 'application/zip',
lastModified: new Date().getMilliseconds()
});
expect.assertions(6);
return new Promise((resolve) => {
const layers = map.getLayers();
layers.on('add', (event) => {
const layer = event.element;
expect(layers.getLength()).toBe(2);
const features = layer.getSource()?.getFeatures();
expect(features?.length).toBe(1);
const feat = features?.[0];
const coords = feat?.getGeometry()?.getCoordinates();
const properties = feat?.getProperties() || {};
expect(coords[0]).toBe(47);
expect(coords[1]).toBe(-11);
expect('song' in properties).toBe(true);
expect(properties.song).toBe('If you have ghosts');
resolve(true);
});
FileUtil.addShpLayerFromFile(shpFile, map);
});
});
});
});
});
//# sourceMappingURL=FileUtil.spec.js.map