Files
j_kedzierski/scripts/test_validation.ts
T

62 lines
2.0 KiB
TypeScript

import { getPayload } from 'payload'
import configPromise from '../src/payload.config'
async function run() {
const payload = await getPayload({ config: configPromise })
console.log("Symulacja odebrania FormData(puste pola) na backendzie (zgodnie z logiką validateSubmission)...")
const incomingData: Record<string, any> = {
name: "",
email: "",
message: "",
consent: true // Pomijamy consent
}
console.log("Dane wejściowe (z FormData):", incomingData)
const form: any = await payload.findByID({ id: 1, collection: 'forms', depth: 0 })
const fields = form.fields || []
let validationResult: any = { ok: true, cleaned: {} }
for (const field of fields) {
if (field.blockType === 'message') continue;
const value = incomingData[field.name]
const isBlank = value == null || (typeof value === 'string' && value.trim() === '') || value === false
if (field.required && isBlank) {
validationResult = { field: field.name, kind: 'required', ok: false, reason: 'invalid' }
break;
}
if (value !== undefined) {
validationResult.cleaned[field.name] = value
}
}
console.log("\\n=== Wynik validateSubmission ===")
console.log(JSON.stringify(validationResult, null, 2))
if (validationResult.ok) {
console.log("\\nTworzenie wpisu w bazie przez payload.create (symulacja zapisu)...")
const submission = await payload.create({
collection: 'form-submissions',
data: {
form: 1,
submissionData: Object.entries(validationResult.cleaned).map(([field, value]) => ({
field,
value: value == null ? '' : String(value),
})) as any,
}
})
console.log("\\nZapisano w bazie:", JSON.stringify(submission.submissionData, null, 2))
} else {
console.log("\\nFormularz odrzucony na poziomie API backendowego (validateSubmission) - rekord NIE trafił do bazy, użytkownik dostaje błąd o braku pola.")
}
process.exit(0)
}
run().catch(console.error)