import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import { Coordinate } from '../types';
import { ExportPolygonForm } from './ExportPolygonForm';
import { FormatType } from './format/types';
const polygon: Coordinate[] = [
{ latitude: 0, longitude: 0 },
{ latitude: 1, longitude: 1 },
{ latitude: 1, longitude: 0 },
{ latitude: 0, longitude: 0 },
];
describe('ExportPolygonForm', () => {
const getTextarea = () => screen.getByRole('textbox') as HTMLInputElement;
describe('JTS', () => {
it('should switch to JTS', () => {
render();
const formatSelect = screen.getByLabelText('Export format');
fireEvent.change(formatSelect, { target: { value: FormatType.JTS } });
expect(formatSelect).toHaveValue(FormatType.JTS);
expect(getTextarea().value).toMatchInlineSnapshot(`
"[
[
0,
0
],
[
1,
1
],
[
0,
1
],
[
0,
0
]
]"
`);
});
});
describe('GeoJSON', () => {
it('should be selected by default', () => {
render();
const formatSelect = screen.getByLabelText('Export format');
fireEvent.change(formatSelect, { target: { value: FormatType.GEOJSON } });
expect(getTextarea().value).toBeValidGeoJSON();
expect(getTextarea().value).toMatchInlineSnapshot(`
"{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
0,
0
],
[
1,
1
],
[
0,
1
],
[
0,
0
]
]
]
}
}
]
}"
`);
});
});
describe('LatLng', () => {
it('should change format to LatLng', () => {
render();
const formatSelect = screen.getByLabelText('Export format');
fireEvent.change(formatSelect, { target: { value: FormatType.LATLNG } });
expect(getTextarea().value).toMatchInlineSnapshot(`
"[
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 1,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
},
{
"latitude": 0,
"longitude": 0
}
]"
`);
});
});
});