test(ops96-audit): extrair pins puros do municipalityUpdateCreateSchema para unit — zod sem Local API

This commit is contained in:
Francisco Solla 2026-08-25 14:01:15 -03:00
parent adcfb39a49
commit d8866d903f
2 changed files with 78 additions and 72 deletions

View file

@ -10,7 +10,6 @@ import { beforeAll, describe, expect, it, vi } from 'vitest'
import { createMunicipalityUpdateRecord } from '@/app/(campaign)/campanha/actions/municipalityUpdate'
import { MunicipalityUpdate } from '@/collections/MunicipalityUpdate'
import { municipalityUpdateCreateSchema } from '@/lib/schemas/municipalityUpdate'
import type { CampaignUser } from '@/payload-types'
import config from '@/payload.config'
import { acquireTextAdvisoryLocks } from '@/utilities/postgresTransactionLocks'
@ -68,77 +67,6 @@ describe('campaign municipality update domain', () => {
payload = await getPayload({ config: await config })
})
it('requires body and polarity and accepts urgent and adversary flags', () => {
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'neutra',
body: 'Mobilização na feira',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
body: 'Sem polaridade',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
urgent: true,
body: 'Precisamos responder hoje.',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'neutra',
body: ' ',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
body: 'Ex-prefeito retirou o apoio na feira.',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'invalid',
body: 'Visita adversária confirmada.',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
adversarySignal: true,
}).success,
).toBe(false)
})
it('strips forged author and timestamps from input', () => {
const parsed = municipalityUpdateCreateSchema.parse({
municipality: 1,
polarity: 'neutra',
body: 'Registro de campo',
author: 999,
createdAt: '2000-01-01T00:00:00.000Z',
updatedAt: '2000-01-01T00:00:00.000Z',
})
expect(parsed).toEqual({
municipality: 1,
polarity: 'neutra',
body: 'Registro de campo',
urgent: false,
adversarySignal: false,
})
})
it('enforces body and polarity validation through the Local API', async () => {
const coordinator = await campaignFixtures().createCampaignUser('coordinator')
const municipality = await campaignFixtures().getMunicipality()

View file

@ -0,0 +1,78 @@
// @vitest-environment node
import { describe, expect, it } from 'vitest'
import { municipalityUpdateCreateSchema } from '@/lib/schemas/municipalityUpdate'
describe('municipalityUpdateCreateSchema', () => {
it('requires body and polarity and accepts urgent and adversary flags', () => {
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'neutra',
body: 'Mobilização na feira',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
body: 'Sem polaridade',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
urgent: true,
body: 'Precisamos responder hoje.',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'neutra',
body: ' ',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
body: 'Ex-prefeito retirou o apoio na feira.',
}).success,
).toBe(true)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'invalid',
body: 'Visita adversária confirmada.',
}).success,
).toBe(false)
expect(
municipalityUpdateCreateSchema.safeParse({
municipality: 1,
polarity: 'ruim',
adversarySignal: true,
}).success,
).toBe(false)
})
it('strips forged author and timestamps from input', () => {
const parsed = municipalityUpdateCreateSchema.parse({
municipality: 1,
polarity: 'neutra',
body: 'Registro de campo',
author: 999,
createdAt: '2000-01-01T00:00:00.000Z',
updatedAt: '2000-01-01T00:00:00.000Z',
})
expect(parsed).toEqual({
municipality: 1,
polarity: 'neutra',
body: 'Registro de campo',
urgent: false,
adversarySignal: false,
})
})
})