F1 — a tolerancia de simplificacao e os digitos de quantizacao viraram politica em unidades de solo em scripts/lib/topology.mjs, consumida pelos dois scripts de geometria. Os quantis 0.35 copiados cortavam as 19 ZE de Salvador a ~0.6 m2 e os 417 municipios a ~1.78 km2; com tolerancia absoluta e a grade de ~103 m do estado, a malha das zonas caiu de 480 para 30.2 pontos/feature. bahia-municipalities segue byte-identico e o tripwire de bytes deu lugar a pontos/feature. F2 — featureMapKey passou a ser asserido sobre features reais das tres malhas comprometidas (417 codarea, 27 code, 19 slug), e o comentario de MAP_KEY_PROPERTIES agora diz o que o codigo faz: as propriedades sao mutuamente exclusivas, nao ordenadas por especificidade. F3 — a malha das zonas e um detalhe sobre o mapa, nao o mapa: se o chunk falha, Salvador cai no poligono municipal que ja esta desenhado embaixo e o resto da Bahia continua funcionando, com o motivo logado. A ressalva de aproximacao saiu do gate de comparacao e passou a depender de bundle.hasZoneMunicipalities, derivado no servidor de municipality.kind. F4 — orfaos deletados: os dois acessores sem chamador, isZoneMapKey (o servidor ja sabe a regra), o wrapper simplifyTopology e o helper polygonCount com um branch inalcancavel. MunicipalityMapNavigation colapsou em string | undefined e MunicipalitiesByMapKey em Record<string, string>.
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
|
|
import {
|
|
buildMunicipalitiesByIbgeCode,
|
|
buildMunicipalitiesByMapKey,
|
|
mapKeyForMunicipality,
|
|
} from '@/utilities/municipalityMapNavigation'
|
|
|
|
const abaira = { slug: 'abaira', name: 'Abaíra', ibgeCode: '2900108', kind: 'municipio' } as const
|
|
const salvadorZe1 = {
|
|
slug: 'salvador-ze-1',
|
|
name: 'Salvador — ZE 1',
|
|
ibgeCode: '2927408',
|
|
kind: 'zona',
|
|
} as const
|
|
const salvadorZe2 = {
|
|
slug: 'salvador-ze-2',
|
|
name: 'Salvador — ZE 2',
|
|
ibgeCode: '2927408',
|
|
kind: 'zona',
|
|
} as const
|
|
|
|
describe('municipalityMapNavigation', () => {
|
|
it('buildMunicipalitiesByIbgeCode groups municipalities by ibgeCode and sorts by name', () => {
|
|
const result = buildMunicipalitiesByIbgeCode([salvadorZe2, salvadorZe1, abaira])
|
|
|
|
expect(result['2900108']).toEqual([{ slug: 'abaira', name: 'Abaíra' }])
|
|
expect(result['2927408']).toEqual([
|
|
{ slug: 'salvador-ze-1', name: 'Salvador — ZE 1' },
|
|
{ slug: 'salvador-ze-2', name: 'Salvador — ZE 2' },
|
|
])
|
|
})
|
|
|
|
it('keys zone municipalities by slug and everything else by codarea', () => {
|
|
expect(mapKeyForMunicipality(abaira)).toBe('2900108')
|
|
expect(mapKeyForMunicipality(salvadorZe1)).toBe('salvador-ze-1')
|
|
})
|
|
|
|
it('gives every zone its own map key instead of pooling them under the city', () => {
|
|
const byMapKey = buildMunicipalitiesByMapKey([salvadorZe1, salvadorZe2, abaira])
|
|
|
|
expect(byMapKey).toEqual({
|
|
'2900108': 'abaira',
|
|
'salvador-ze-1': 'salvador-ze-1',
|
|
'salvador-ze-2': 'salvador-ze-2',
|
|
})
|
|
expect(byMapKey['2927408']).toBeUndefined()
|
|
})
|
|
})
|