react-spatial
Version:
Components to build React map apps.
148 lines (127 loc) • 4.4 kB
JavaScript
import React from 'react';
import renderer from 'react-test-renderer';
import { configure, mount, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import 'jest-canvas-mock';
import OLMap from 'ol/Map';
import Feature from 'ol/Feature';
import Point from 'ol/geom/Point';
import Line from 'ol/geom/LineString';
import Popup from './Popup';
var map = new OLMap({});
configure({ adapter: new Adapter() });
var feat = new Feature({
geometry: new Point(0, 0),
});
var featLine = new Feature({
geometry: new Line([
[0, 0],
[1, 1] ]),
});
describe('Popup', function () {
describe('should match snapshot', function () {
test('without feature', function () {
var component = renderer.create(
React.createElement( Popup, { map: map },
React.createElement( 'div', { id: "foo" })
)
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('with default values.', function () {
var component = renderer.create(
React.createElement( Popup, { map: map, feature: feat },
React.createElement( 'div', { id: "foo" })
)
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('without close button.', function () {
var component = renderer.create(
React.createElement( Popup, { map: map, feature: feat, showCloseButton: false },
React.createElement( 'div', { id: "bar" })
)
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('with tabIndex defined.', function () {
var component = renderer.create(
React.createElement( Popup, { map: map, feature: feat, tabIndex: "0" },
React.createElement( 'div', { id: "bar" })
)
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
});
[
['click', {}],
['keypress', { which: 13 }] ].forEach(function (evt) {
test(("should trigger onCloseClick function on " + (evt[0]) + " event."), function () {
var ref;
var Closer = function Closer () {};
Closer.onCloseClick = function onCloseClick () {};
var spy = jest.spyOn(Closer, 'onCloseClick');
var component = mount(
React.createElement( Popup, {
map: map, feature: feat, onCloseClick: function () { return Closer.onCloseClick(); } },
React.createElement( 'div', { id: "gux" })
)
);
(ref = component
.find('.rs-popup-close-bt')
.at(1))
.simulate.apply(ref, evt);
expect(spy).toHaveBeenCalled();
});
test(("should trigger default onCloseClick function on " + (evt[0]) + " event without errors."), function () {
var ref;
var component = mount(
React.createElement( Popup, { map: map, feature: feat, n: true },
React.createElement( 'div', { id: "gux" })
)
);
// test if no js error triggered by the default value
try {
(ref = component
.find('.rs-popup-close-bt')
.at(1))
.simulate.apply(ref, evt);
expect(true).toBe(true);
} catch (e) {
expect(false).toBe(true);
}
});
});
describe("updates position", function () {
test("on map postrender event.", function () {
map.getPixelFromCoordinate = jest.fn(function () { return [10, 200]; });
var component = shallow(
React.createElement( Popup, { map: map, feature: feat },
React.createElement( 'div', { id: "gux" })
)
);
var spy = jest.spyOn(component.instance(), 'updatePixelPosition');
map.dispatchEvent({ type: 'postrender' });
expect(spy).toHaveBeenCalledTimes(1);
});
});
test("deregisters postrender on unmount.", function () {
map.getPixelFromCoordinate = jest.fn(function () { return [10, 200]; });
var component = shallow(
React.createElement( Popup, { map: map, feature: featLine },
React.createElement( 'div', { id: "gux" })
)
);
var spy = jest.spyOn(component.instance(), 'updatePixelPosition');
map.dispatchEvent({ type: 'postrender' });
expect(spy).toHaveBeenCalledTimes(1);
component.unmount();
map.dispatchEvent({ type: 'postrender' });
expect(spy).toHaveBeenCalledTimes(1);
});
});
//# sourceMappingURL=Popup.test.js.map