UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

83 lines (82 loc) 2.98 kB
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; import OgcApiFeaturesManager from './ogcapifeaturesmanager'; import Feature from 'ol/Feature'; import MockHelper from '../tests/mockhelper'; import ServerOgc from '../../models/serverogc'; vi.mock('./ogcapifeaturesclient'); describe('OgcApiFeaturesManager', () => { beforeAll(() => { MockHelper.startMocking(); }); afterAll(() => { MockHelper.stopMocking(); }); let manager; let layer = { url: 'https://testUrl.com', collectionId: 'collectionId', crs: '', credentials: '', geometryType: 'Point', attributeName: '', attributeType: '', serverType: 'default', server: new ServerOgc('test', { url: 'https://testUrl.com', wfsSupport: false, urlWfs: '', oapifSupport: true, urlOapif: "'https://testUrl.com", type: 'default', imageType: '' }) }; beforeEach(() => { vi.clearAllMocks(); manager = OgcApiFeaturesManager.getInstance(); }); describe('getSchema', () => { const mockSchemaResponse = { properties: { geometry: { 'format': 'geometry-any', 'x-ogc-role': 'primary-geometry' }, id: { 'type': 'integer', 'x-ogc-role': 'id', // Primary key 'x-ogc-propertySeq': 0 // Attribute order }, titleAttribute: { 'title': 'Attr Title', 'type': 'string', 'maxLength': 100, 'x-ogc-propertySeq': 1 }, doubleAttribute: { 'type': 'number', 'format': 'double', 'x-ogc-propertySeq': 3 } } }; it('should return a template object based on the schema', async () => { manager.getClient(layer.server).getSchema.mockResolvedValue(mockSchemaResponse); const result = await manager.getSchema(layer); expect(result.template).toEqual({ titleAttribute: null, doubleAttribute: null }); }); }); describe('getItems', () => { it('should return a list of features', async () => { const mockFeatures = [new Feature()]; manager.getClient(layer.server).getItems.mockResolvedValue(mockFeatures); const result = await manager.getItems(layer); expect(result).toEqual(mockFeatures); }); it('should handle failure and return empty list', async () => { manager.getClient(layer.server).getItems.mockRejectedValue(new Error('Error')); const result = await manager.getItems(layer); expect(result).toEqual([]); }); }); });