UNPKG

react-spatial

Version:

Components to build React map apps.

149 lines (132 loc) 5.16 kB
import 'jest-canvas-mock'; import LayerService from './LayerService'; import ConfigReader from './ConfigReader'; import Layer from './layers/Layer'; describe('LayerService', function () { var instantiateLayerService = function (data) { var layers = ConfigReader.readConfig(data); return new LayerService(layers); }; var layerData = [ { name: 'root', }, { name: '1', children: [ { name: '1-1', radioGroup: 'radio', }, { name: '1-2', radioGroup: 'radio', children: [{ name: '1-2-1' }, { name: '1-2-2' }, { name: '2' }], } ], } ]; test('should instantiate LayerService class correctly.', function () { var layerService = instantiateLayerService(layerData); expect(layerService.getLayersAsFlatArray().length).toBe(7); }); test('should return the correct number of layers.', function () { var layerService = instantiateLayerService(layerData); expect(layerService.getLayers().length).toBe(2); }); test('should return layers by name.', function () { var layerService = instantiateLayerService(layerData); expect(layerService.getLayer('root')).toBeDefined(); expect(layerService.getLayer('1-2-2')).toBeDefined(); expect(layerService.getLayer('1-2')).toBeDefined(); expect(layerService.getLayer('42')).toBeUndefined(); }); test('should return the parent layer.', function () { var layerService = instantiateLayerService(layerData); var child = layerService.getLayer('1-2'); expect(layerService.getParent(child).getName()).toBe('1'); }); test('should return null if no radio name is given.', function () { var layerService = instantiateLayerService(layerData); expect(layerService.getRadioGroupLayers()).toBe(null); }); test('should return radio layers.', function () { var layerService = instantiateLayerService(layerData); expect(layerService.getRadioGroupLayers('radio').length).toBe(2); expect(layerService.getRadioGroupLayers('no-radio').length).toBe(0); }); test('should toggle radio layers.', function () { var layerService = instantiateLayerService(layerData); layerService.getLayer('1-1').setVisible(true); expect(layerService.getLayer('1-1').getVisible()).toBe(true); layerService.getLayer('1-2').setVisible(true); expect(layerService.getLayer('1-1').getVisible()).toBe(false); }); test('should toggle child layers.', function () { var layerService = instantiateLayerService(layerData); layerService.getLayer('1-2').setVisible(true); expect(layerService.getLayer('1-2-1').getVisible()).toBe(true); expect(layerService.getLayer('1-2-2').getVisible()).toBe(true); expect(layerService.getLayer('2').getVisible()).toBe(true); }); test('should call back on visibility changes.', function () { var layerService = instantiateLayerService(layerData); var callback = jest.fn(function () { return 42; }); layerService.on('change:visible', callback); layerService.getLayer('2').setVisible(true); expect(callback.mock.calls.length).toBe(3); }); test('should set children from constructor', function () { var layer = new Layer({ name: 'foo', children: [ new Layer({ name: 'bar', }) ], }); expect(layer.getChildren().length).toBe(1); }); describe('#on() ', function () { test('add a callback on event.', function () { var layerService = instantiateLayerService(layerData); var cb = function () {}; layerService.on('foo', cb); expect(layerService.callbacks.foo[0]).toBe(cb); }); test("doesn't add twice the same callback .", function () { var layerService = instantiateLayerService(layerData); var cb = function () {}; layerService.on('foo', cb); expect(layerService.callbacks.foo[0]).toBe(cb); layerService.on('foo', cb); expect(layerService.callbacks.foo[0]).toBe(cb); expect(layerService.callbacks.foo[1]).toBe(undefined); }); }); describe('#un() ', function () { test("doesn't failed if callback doesn't exists.", function (done) { var layerService = instantiateLayerService(layerData); var cb = function () {}; try { layerService.un('foo', cb); done(); // eslint-disable-next-line no-empty } catch (e) {} }); test('remove a callback on event.', function () { var layerService = instantiateLayerService(layerData); var cb = function () {}; var cb1 = function () {}; var cb2 = function () {}; layerService.on('foo', cb); layerService.on('foo', cb1); layerService.on('foo', cb2); expect(layerService.callbacks.foo[0]).toBe(cb); expect(layerService.callbacks.foo[1]).toBe(cb1); expect(layerService.callbacks.foo[2]).toBe(cb2); layerService.un('foo', cb1); expect(layerService.callbacks.foo[0]).toBe(cb); expect(layerService.callbacks.foo[1]).toBe(cb2); expect(layerService.callbacks.foo[2]).toBe(undefined); }); }); }); //# sourceMappingURL=LayerService.test.js.map