react-spatial
Version:
Components to build React map apps.
89 lines (77 loc) • 2.51 kB
JavaScript
import React from 'react';
import { configure, shallow, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import renderer from 'react-test-renderer';
import SelectLinks from './SelectLinks';
configure({ adapter: new Adapter() });
describe('SelectLinks', function () {
describe('when no properties are set', function () {
var spy = null;
beforeEach(function () {
window.console.error = jest.fn().mockImplementation(function () {});
spy = jest.spyOn(window.console, 'error');
});
afterEach(function () {
spy.mockRestore();
window.console.error.mockRestore();
});
test('displays 3 errors in the console', function () {
shallow(React.createElement( SelectLinks, null ));
expect(spy).toHaveBeenCalledTimes(3);
});
test('matches snapshot', function () {
var component = renderer.create(React.createElement( SelectLinks, null ));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
});
describe('when properties are set', function () {
var onClick = function () {};
var options = [
{
title: 'foo',
label: 'qux',
},
{
title: 'bar',
label: 'quux',
},
{
title: 'baz',
label: 'corge',
} ];
test('matches snapshot', function () {
var component = renderer.create(
React.createElement( SelectLinks, {
isSelected: function () { return false; }, options: options, onClick: onClick })
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('matches snapshot when a link is selected', function () {
var component = renderer.create(
React.createElement( SelectLinks, {
isSelected: function (option) { return option.title === 'bar'; }, options: options, onClick: onClick })
);
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('can click a link', function () {
var fn = jest.fn(onClick);
var fn2 = jest.fn();
var evt = {
preventDefault: fn2,
stopPropagation: fn2,
};
var wrapper = mount(
React.createElement( SelectLinks, { isSelected: function () { return false; }, options: options, onClick: fn })
);
wrapper
.find('a')
.first()
.simulate('click', evt);
expect(fn).toHaveBeenCalledTimes(1);
});
});
});
//# sourceMappingURL=SelectLinks.test.js.map