@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
38 lines (37 loc) • 1.86 kB
JavaScript
import { expect, it, describe, beforeEach, afterAll } from 'vitest';
import PrintManager from './PrintManager';
import MockHelper from '../../../tools/tests/mockhelper';
import I18nManager from '../../../tools/i18n/i18nmanager';
import { createPointFeature } from '../../../tools/tests/olhelpers';
describe('PrintManager', () => {
beforeEach(() => {
MockHelper.startMocking();
});
afterAll(() => {
MockHelper.stopMocking();
});
describe('getPrintDatasourceFromSelectedFeatures', () => {
const extent = [0, 0, 1000, 1000];
// Ten points from [0, 0] to [0, 2000] => we will keep 6 regarding the extent
const selectedFeatures = [...Array(10)].map((_, index) => {
const point = createPointFeature();
point.getGeometry()?.setCoordinates([0, 200 * index]);
const id = index % 2 ? 'vegetationB.1234' : 'vegetationA.5678';
point.setId(id);
point.set('tree', 'oak');
return point;
});
it('should format the data source for printing based on selected features filtered by the given extent', () => {
const result = PrintManager.getPrintDatasourceFromSelectedFeatures(selectedFeatures, extent, I18nManager.getInstance());
expect(result.length).toBe(2);
expect(result[0].title).toEqual('vegetationA');
expect(result[1].title).toEqual('vegetationB');
expect(result[0].table.columns.length).toBe(2);
expect(result[0].table.columns).toEqual(['name', 'tree']);
expect(result[0].table.data.length).toBe(3);
expect(result[0].table.data[0]).toEqual(['A test point', 'oak']);
const keptFeatures = result[0].table.data.length + result[1].table.data.length;
expect(keptFeatures).toBe(6);
});
});
});