react-spatial
Version:
Components to build React map apps.
135 lines (119 loc) • 4.96 kB
JavaScript
/* eslint-disable react/jsx-props-no-spreading */
import React from 'react';
import { configure, shallow, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import 'jest-canvas-mock';
import OLMap from 'ol/Map';
import renderer from 'react-test-renderer';
import BaseLayerToggler from './BaseLayerToggler';
import exampleData from '../../../data/ExampleData';
import data from '../../../data/TreeData';
import ConfigReader from '../../ConfigReader';
import LayerService from '../../LayerService';
configure({ adapter: new Adapter() });
var shallowComp = function (newData, props) {
var map = new OLMap({});
var layers = ConfigReader.readConfig(newData || data);
var layerService = new LayerService(layers);
return shallow(
React.createElement( BaseLayerToggler, Object.assign({},
{ layerService: layerService, map: map }, (props || {})))
);
};
var mountComp = function (newData, props) {
var map = new OLMap({});
var layers = ConfigReader.readConfig(newData || data);
var layerService = new LayerService(layers);
return mount(
React.createElement( BaseLayerToggler, Object.assign({},
{ layerService: layerService, map: map }, (props || {})))
);
};
var expectSnapshot = function (newData, props) {
var map = new OLMap({});
var layers = ConfigReader.readConfig(newData || data);
var layerService = new LayerService(layers);
var component = renderer.create(
React.createElement( BaseLayerToggler, Object.assign({},
{ layerService: layerService, map: map }, (props || {})))
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
};
describe('BaseLayerToggler', function () {
describe('matches snapshots', function () {
test('using default properties.', function () {
expectSnapshot();
});
});
test('initialize correctly the state', function () {
var wrapper = shallowComp();
var comp = wrapper.instance();
expect(comp.state.idx).toBe(1);
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layerVisible).toBe(comp.state.layers[0]);
});
test('goes forward through all available layer except the current layer displayed on the map.', function () {
var wrapper = shallowComp();
var comp = wrapper.instance();
var layerVisible = comp.state.layers[0];
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(1);
wrapper.find('.tm-base-layer-next').simulate('click');
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(2);
// Layer at index 0 is displayed on the map so we must ignore it
wrapper.find('.tm-base-layer-next').simulate('click');
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(1);
});
test('goes backward through all available layer except the current layer displayed on the map.', function () {
var wrapper = shallowComp();
var comp = wrapper.instance();
var layerVisible = comp.state.layers[0];
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(1);
wrapper.find('.tm-base-layer-previous').simulate('click');
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(2);
// Layer at index 0 is displayed on the map so we must ignore it
wrapper.find('.tm-base-layer-previous').simulate('click');
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(1);
});
test('displays always a baseLayer on the map.', function () {
var wrapper = shallowComp();
var comp = wrapper.instance();
var layerVisible = comp.state.layers[0];
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.idx).toBe(1);
comp.state.layers[0].setVisible(false);
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layerVisible).toBe(layerVisible);
expect(comp.state.layerVisible.getVisible()).toBe(true);
expect(comp.state.idx).toBe(0);
});
test('display on the map the layer clicked', function () {
var wrapper = mountComp(data);
var comp = wrapper.instance();
expect(comp.state.layers.length).toBe(3);
expect(comp.state.layers[0].getVisible()).toBe(true);
wrapper
.find('.tm-base-layer-item')
.at(1)
.simulate('click');
wrapper.update();
expect(comp.state.layers[0].getVisible()).toBe(false);
expect(comp.state.layers[1].getVisible()).toBe(true);
expect(comp.state.layerVisible).toBe(comp.state.layers[1]);
expect(comp.state.idx).toBe(0); // Toggle
});
test('hide baseLayerToggler if only one baselayer', function () {
var wrapper = mountComp(exampleData);
expect(wrapper.find('.tm-base-layer-item').exists()).toBe(false);
});
});
//# sourceMappingURL=BaseLayerToggler.test.js.map