code: validate,dbal,update (2 files)

This commit is contained in:
2025-12-25 19:41:05 +00:00
parent c7c565e7d4
commit 423ba464ae
2 changed files with 40 additions and 28 deletions

View File

@@ -0,0 +1,27 @@
import { describe, expect, it } from 'vitest'
import { validateComponentHierarchyCreate } from './validate-component-hierarchy-create'
describe('validateComponentHierarchyCreate', () => {
const base = {
pageId: '550e8400-e29b-41d4-a716-446655440000',
componentType: 'Hero',
order: 0,
props: { title: 'Hello' },
}
it.each([
{ data: base },
{ data: { ...base, parentId: '00000000-0000-0000-0000-000000000000' } },
])('accepts %s', ({ data }) => {
expect(validateComponentHierarchyCreate(data)).toEqual([])
})
it.each([
{ data: { ...base, pageId: 'not-a-uuid' }, message: 'pageId must be a valid UUID' },
{ data: { ...base, componentType: 'a'.repeat(101) }, message: 'componentType must be 1-100 characters' },
{ data: { ...base, order: -1 }, message: 'order must be a non-negative integer' },
{ data: { ...base, props: [] }, message: 'props must be an object' },
])('rejects %s', ({ data, message }) => {
expect(validateComponentHierarchyCreate(data)).toContain(message)
})
})

View File

@@ -1,34 +1,19 @@
import { describe, it, expect } from 'vitest'
import { describe, expect, it } from 'vitest'
import { validatePageUpdate } from './validate-page-update'
describe('validatePageUpdate', () => {
it.each([
{ name: 'empty', data: {}, expected: [] },
{
name: 'invalid slug',
data: { slug: 'Bad Slug' },
expected: ['Invalid slug format'],
},
{
name: 'invalid title',
data: { title: '' },
expected: ['Invalid title (must be 1-200 characters)'],
},
{
name: 'invalid level',
data: { level: 6 },
expected: ['Invalid level (must be 0-5)'],
},
{
name: 'multiple invalid',
data: { slug: 'Bad Slug', title: '', level: 6 },
expected: [
'Invalid slug format',
'Invalid title (must be 1-200 characters)',
'Invalid level (must be 0-5)',
],
},
])('returns errors for $name', ({ data, expected }) => {
expect(validatePageUpdate(data)).toEqual(expected)
{ data: { title: 'Updated' } },
{ data: { level: 5 } },
])('accepts %s', ({ data }) => {
expect(validatePageUpdate(data)).toEqual([])
})
it.each([
{ data: { slug: 'Bad Slug' }, message: 'Invalid slug format (lowercase alphanumeric, hyphen, slash, 1-255 chars)' },
{ data: { layout: [] }, message: 'Layout must be an object' },
{ data: { isActive: 'no' as unknown as boolean }, message: 'isActive must be a boolean' },
])('rejects %s', ({ data, message }) => {
expect(validatePageUpdate(data)).toContain(message)
})
})