maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
37 lines (31 loc) • 1.56 kB
text/typescript
import {describe, expect, test} from 'vitest';
import {CustomStyleLayer, validateCustomStyleLayer, type CustomLayerInterface} from './custom_style_layer.ts';
describe('validateCustomStyleLayer', () => {
test('reports nothing for a valid custom layer', () => {
const layer: CustomLayerInterface = {id: 'custom', type: 'custom', renderingMode: '3d', render() {}};
expect(validateCustomStyleLayer(layer)).toEqual([]);
});
test('reports every missing or invalid part of a custom layer, as errors', () => {
const errors = validateCustomStyleLayer({renderingMode: 'nonsense'} as any as CustomLayerInterface);
expect(errors.map(({message}) => message)).toEqual([
'layers.undefined: missing required property "id"',
'layers.undefined: missing required method "render"',
'layers.undefined: property "renderingMode" must be either "2d" or "3d"'
]);
expect(errors.map(({severity}) => severity)).toEqual(['error', 'error', 'error']);
});
});
describe('CustomStyleLayer', () => {
test('set visibility', () => {
const layerSpec: CustomLayerInterface = {
id: '',
type: 'custom',
render() {}
};
const layer = new CustomStyleLayer(layerSpec, {});
layer.setLayoutProperty('visibility', 'visible');
expect(layer.getLayoutProperty('visibility')).toBe('visible');
layer.setLayoutProperty('visibility', 'none');
expect(layer.getLayoutProperty('visibility')).toBe('none');
});
});