import { shallow, ShallowWrapper } from 'enzyme'; import { Modal } from 'reactstrap'; import { Marker, Popup } from 'react-leaflet'; import MapModal from '../../../src/visits/helpers/MapModal'; import { CityStats } from '../../../src/visits/types'; describe('', () => { let wrapper: ShallowWrapper; const toggle = () => ''; const isOpen = true; const title = 'Foobar'; const zaragozaLat = 41.6563497; const zaragozaLong = -0.876566; const newYorkLat = 40.730610; const newYorkLong = -73.935242; const locations: CityStats[] = [ { cityName: 'Zaragoza', count: 54, latLong: [ zaragozaLat, zaragozaLong ], }, { cityName: 'New York', count: 7, latLong: [ newYorkLat, newYorkLong ], }, ]; beforeEach(() => { wrapper = shallow(); }); afterEach(() => wrapper.unmount()); it('renders modal with provided props', () => { const modal = wrapper.find(Modal); const header = wrapper.find('.map-modal__modal-title'); expect(modal.prop('toggle')).toEqual(toggle); expect(modal.prop('isOpen')).toEqual(isOpen); expect(header.find('.close').prop('onClick')).toEqual(toggle); expect(header.text()).toContain(title); }); it('renders open street map tile', () => { expect(wrapper.find('OpenStreetMapTile')).toHaveLength(1); }); it('renders proper amount of markers', () => { const markers = wrapper.find(Marker); expect(markers).toHaveLength(locations.length); locations.forEach(({ latLong, count, cityName }, index) => { const marker = markers.at(index); const popup = marker.find(Popup); expect(marker.prop('position')).toEqual(latLong); expect(popup.text()).toEqual(`${count} visits from ${cityName}`); }); }); });