mirror of
https://github.com/supabase/supabase.git
synced 2026-09-06 18:11:51 +08:00
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
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)
|
|
})
|
|
})
|