import TopographicMap from 'generic-components/map/TopographicMap' import {PROJECTION_TYPES} from "generic-components/map/MapConstants.js" import React from 'react'; import {shallow, mount} from 'enzyme' describe('Utility methods tests', () => { const sut = shallow().instance(); describe('areArraysEqual tests', () => { it('Empty arrays should be equal', () => { expect(sut.areArraysEqual([], [])).toBe(true); }); it('Nested empty arrays should be equal', () => { expect(sut.areArraysEqual([[]], [[]])).toBe(true); expect(sut.areArraysEqual([[],[]], [[],[]])).toBe(true); }); it('A nested empty array should not be equal to an empty array', () => { expect(sut.areArraysEqual([[]], [])).toBe(false); }); it('Should not coerce elements', () => { expect(sut.areArraysEqual([undefined], [null])).toBe(false); expect(sut.areArraysEqual([['x']],['x'])).toBe(true); expect(sut.areArraysEqual([['xx']],['xx'])).toBe(false); expect(sut.areArraysEqual([true], ["true"])).toBe(false); expect(sut.areArraysEqual([1], ["1"])).toBe(false); }); }); describe('extractNestedObjectInJson tests', () => { it('Should return an empty object from an empty object', () => { expect(sut.extractNestedObjectInJson({},['a'])).toBeUndefined(); expect(sut.extractNestedObjectInJson({},['a', 'b'])).toBeUndefined(); }); it('Should extract a nested element', () => { const value = "Foo"; expect(sut.extractNestedObjectInJson({a:{b: value}},['a', 'b'])).toBe(value); }); }); }); describe('TopographicMap integration tests', () => { const svgTag = 'svg'; const circleTag = 'circle'; const worldBounds = [ {longtitude: 28.70, latitude: -127.50}, {longtitude: 48.85, latitude: -55.90}]; const outsideUSA = [{longitude: 19.145136, latitude: 51.919438}]; const insideUSA = [ {longitude:-122.4196396, latitude:37.7771187}, {longitude:-122.4196396, latitude:37.6771187}, {longitude:-122.4196396, latitude:37.5771187}, {longitude:-122.4196396, latitude:37.4771187}]; describe('AlbertsUSA projection tests', () => { it('Points outside USA should not be supported', () => { expect(() => mount()).toThrow(); expect(() => mount()).toThrow(); expect(() => mount()).toThrow(); }); it('Should generate n points on a map', () => { const sut = mount(); expect(sut.find(svgTag).find(circleTag).length).toBe(insideUSA.length); }); }); describe('Equirectangular projection tests', () => { function createEquirectangularProjection(points) { return mount(); } it('Should display points', () => { const sutInsideUSA = createEquirectangularProjection(insideUSA); const sutOutsideUSA = createEquirectangularProjection(outsideUSA); const sutMixed = createEquirectangularProjection(insideUSA.concat(outsideUSA)); expect(sutInsideUSA.find(svgTag).find(circleTag).length).toBe(insideUSA.length); expect(sutOutsideUSA.find(svgTag).find(circleTag).length).toBe(outsideUSA.length); expect(sutMixed.find(svgTag).find(circleTag).length).toBe(insideUSA.length + outsideUSA.length); }); }); });