mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-29 16:24:58 +00:00
code: validate,dbal,update (2 files)
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user