import React from 'react';
import { render, screen } from '@testing-library/react';
import { MAP } from '../constants';
import { Props, BaseMap } from './Map';
import { MOCK_POLYGON } from '../mockPolygon';
jest.mock('react-leaflet', () => ({
__esModule: true,
MapContainer: React.forwardRef(() =>
),
Pane: React.forwardRef(() => ),
useMap: jest.fn,
}));
describe('Map component', () => {
let initialProps: Props;
beforeEach(() => {
initialProps = {
activePolygonIndex: 0,
polygonCoordinates: [MOCK_POLYGON],
boundaryPolygonCoordinates: MOCK_POLYGON,
selection: new Set(),
editable: true,
initialCenter: MAP.DEFAULT_CENTER,
initialZoom: MAP.DEFAULT_ZOOM,
isPolygonClosed: true,
addPoint: jest.fn(),
addPointToEdge: jest.fn(),
addPointsToSelection: jest.fn(),
deselectAllPoints: jest.fn(),
removePointFromSelection: jest.fn(),
selectPoints: jest.fn(),
selectAllPoints: jest.fn(),
moveSelectedPoints: jest.fn(),
deletePolygonPoints: jest.fn(),
setPolygon: jest.fn(),
onUndo: jest.fn(),
onRedo: jest.fn(),
};
});
afterEach(() => {
jest.resetAllMocks();
});
describe('WHEN polygon is NOT disabled', () => {
it('should NOT enable pen tool', () => {
render();
expect(screen.queryByText('Pen')).not.toBeInTheDocument();
});
});
describe('WHEN polygon is disabled', () => {
it('should enable pen tool', () => {
render();
const editButton = screen.getByText('Pen');
expect(editButton).toBeInTheDocument();
});
});
});