| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { describe, expect, test } from 'vitest'
- import {
- buildCountsByIso2,
- computeMarkerRadius,
- getFillColor,
- isKnownCountryCode,
- isMicroCountry,
- MAP_CHART_THEME,
- } from '@/components/interfaces/Reports/utils/geo'
- describe('geo utils', () => {
- test('buildCountsByIso2 aggregates and normalizes input', () => {
- const rows = [
- { country: 'us', count: 1 },
- { country: 'US', count: '2' },
- { country: 'sg', count: 3 },
- { country: null, count: 9 },
- { country: 'us', count: 'not-a-number' },
- ]
- const counts = buildCountsByIso2(rows as any)
- expect(counts).toEqual({ US: 3, SG: 3 })
- })
- test('getFillColor returns muted color when max=0 or value=0', () => {
- const theme = MAP_CHART_THEME.dark
- expect(getFillColor(0, 0, theme)).toBe(theme.zeroFill)
- expect(getFillColor(0, 10, theme)).toBe(theme.zeroFill)
- })
- test('isMicroCountry identifies small states', () => {
- expect(isMicroCountry('Monaco')).toBe(true)
- expect(isMicroCountry('Singapore')).toBe(true)
- expect(isMicroCountry('Germany')).toBe(false)
- })
- test('isKnownCountryCode guards country codes', () => {
- expect(isKnownCountryCode('US')).toBe(true)
- expect(isKnownCountryCode('XX')).toBe(false)
- })
- test('computeMarkerRadius scales between bounds', () => {
- expect(computeMarkerRadius(0, 0)).toBe(2)
- const rLow = computeMarkerRadius(1, 100)
- const rHigh = computeMarkerRadius(90, 100)
- expect(rLow).toBeGreaterThanOrEqual(1.5)
- expect(rHigh).toBeLessThanOrEqual(4)
- expect(rHigh).toBeGreaterThan(rLow)
- })
- })
|