teqo-backup/tests/int/homeSearchSuggestions.int.spec.ts
Cursor Agent 7e6bc9d984
B125 — nearest município first in search suggest + wizard
- Restore B117 home search: scopeMunicipalities, merge prefix, session prompt
- Shared useNearestMunicipalitySlug (B14 key) for busca geral + wizard
- Wizard merge uses geoSlug only — no Perto de você / km copy on rows
- Impl plan: docs/plans/municipio-geo-topo-sugestoes-busca-impl.md

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:21:52 +00:00

71 lines
2.6 KiB
TypeScript

// @vitest-environment node
import type { Payload } from 'payload'
import { getPayload } from 'payload'
import { beforeAll, describe, expect, it } from 'vitest'
import config from '@/payload.config'
import { loadHomeSearchSuggestions } from '@/utilities/homeSearch/loadHomeSearchSuggestions'
import { searchHomeMunicipalities } from '@/utilities/homeSearch/searchHomeMunicipalities'
import { installCampaignFixtures } from '../helpers/campaignFixtures'
let payload: Payload
const campaignFixtures = installCampaignFixtures({
getPayload: () => payload,
setPayload: (nextPayload) => {
payload = nextPayload
},
})
describe('loadHomeSearchSuggestions (B68)', () => {
beforeAll(async () => {
payload = await getPayload({ config: await config })
})
it('returns only high-priority municipalities for coordinator', async () => {
const fixtures = campaignFixtures()
const coordinator = await fixtures.createCampaignUser('coordinator')
const result = await loadHomeSearchSuggestions(payload, coordinator)
expect(result.resultKind).toBe('suggest')
expect(result.territories).toEqual([])
expect(result.municipalities.length).toBeLessThanOrEqual(8)
for (const hit of result.municipalities) {
expect(hit.priority).toBe('alta')
}
expect(result.scopeMunicipalities?.length).toBeGreaterThan(0)
expect(result.scopeMunicipalities?.every((row) => row.ibgeCode.length > 0)).toBe(true)
})
it('scopes advisor suggestions to administered municipalities', async () => {
const fixtures = campaignFixtures()
const advisor = await fixtures.createCampaignUser('advisor')
const administered = await fixtures.getMunicipality()
await fixtures.assignMunicipalityAdvisors(administered.id, [advisor.id])
const result = await loadHomeSearchSuggestions(payload, advisor)
expect(result.municipalities.every((hit) => hit.slug === administered.slug)).toBe(true)
})
it('rejects leaders from home search suggestions', async () => {
const fixtures = campaignFixtures()
const leader = await fixtures.createCampaignUser('leader')
await expect(loadHomeSearchSuggestions(payload, leader)).rejects.toThrow(/equipe de campanha/i)
})
})
describe('searchHomeMunicipalities resultKind (B68)', () => {
beforeAll(async () => {
payload = await getPayload({ config: await config })
})
it('tags search responses with resultKind search', async () => {
const fixtures = campaignFixtures()
const coordinator = await fixtures.createCampaignUser('coordinator')
const result = await searchHomeMunicipalities(payload, coordinator, 'Cai')
expect(result.resultKind).toBe('search')
})
})