import * as React from 'react'; import GeoJSONLayer from '../geojson-layer'; import { withContext } from 'recompose'; import { mount } from 'enzyme'; const PropTypes = require('prop-types'); // tslint:disable-line describe('GeoJSONLayer', () => { let GeoJSONLayerWithContext: any; let addLayerMock = jest.fn(); let mapOnEventMock = jest.fn(); const fillPaint = { 'fill-color': '#001122' }; const data = { type: 'FeatureCollection', features: [] }; beforeEach(() => { addLayerMock = jest.fn(); mapOnEventMock = jest.fn(); GeoJSONLayerWithContext = withContext( { map: PropTypes.object }, () => ({ map: { addSource: jest.fn(), addLayer: addLayerMock, on: mapOnEventMock } }) )(GeoJSONLayer); }); it('Should call addLayer with provided layerOptions', () => { mount( ); const addFillLayerCall = addLayerMock.mock.calls.find(([call]) => call.id.endsWith('-fill') ); expect(addFillLayerCall).toEqual([ { id: 'geojson-1-fill', source: 'geojson-1', type: 'fill', layout: { visibility: 'visible' }, minzoom: 13, paint: { 'fill-color': '#001122' } }, undefined ]); }); it('Should call addLayer when no layerOptions provided', () => { mount(); const addFillLayerCall = addLayerMock.mock.calls.find(([call]) => call.id.endsWith('-fill') ); expect(addFillLayerCall).toEqual([ { id: 'geojson-2-fill', source: 'geojson-2', type: 'fill', layout: { visibility: 'visible' }, paint: { 'fill-color': '#001122' } }, undefined ]); }); it('Should start listening onClick mouse event', () => { mount( ); expect(mapOnEventMock.mock.calls[0][0]).toEqual('click'); expect(mapOnEventMock.mock.calls[0][1]).toEqual('geojson-3-fill'); }); });