feat: Admin Area General Settings and Categories 1.05

This commit is contained in:
OpenVelo Agent
2026-07-22 14:09:02 +00:00
parent 6f4c655e62
commit 60f6f2765b
7 changed files with 399 additions and 43 deletions
+42
View File
@@ -1,6 +1,8 @@
import {
datetimeMessage,
deriveEventState,
endAfterStartValidator,
isoDatetimeValidator,
normalizePageTitle,
pageTitleError,
pageTitleMessage,
@@ -161,3 +163,43 @@ describe('pageTitleMessage', () => {
expect(pageTitleMessage('a'.repeat(121), { maxlength: { requiredLength: 120 } })).toBe(maxLengthMsg);
});
});
describe('isoDatetimeValidator', () => {
it('returns null for an empty value (unconfigured is allowed)', () => {
expect(isoDatetimeValidator({ value: '' })).toBeNull();
expect(isoDatetimeValidator({ value: null })).toBeNull();
expect(isoDatetimeValidator({ value: undefined })).toBeNull();
});
it('returns null for a valid ISO-8601 datetime', () => {
expect(isoDatetimeValidator({ value: '2026-08-15T10:30:00.000Z' })).toBeNull();
});
it('returns { invalidDatetime: true } for a non-datetime string', () => {
expect(isoDatetimeValidator({ value: 'not-a-date' })).toEqual({ invalidDatetime: true });
expect(isoDatetimeValidator({ value: 'also-not-a-date' })).toEqual({ invalidDatetime: true });
});
});
describe('datetimeMessage', () => {
it('returns the per-field error when controlErrors carries invalidDatetime', () => {
expect(datetimeMessage('Event start', 'not-a-date', { invalidDatetime: true }))
.toBe('Event start must be a valid ISO-8601 datetime.');
expect(datetimeMessage('Event end', 'garbage', { invalidDatetime: true }))
.toBe('Event end must be a valid ISO-8601 datetime.');
});
it('falls back to detecting an unparseable value when controlErrors are absent', () => {
expect(datetimeMessage('Event start', 'not-a-date', null))
.toBe('Event start must be a valid ISO-8601 datetime.');
});
it('returns null for an empty value', () => {
expect(datetimeMessage('Event start', '', null)).toBeNull();
expect(datetimeMessage('Event start', '', { invalidDatetime: false as any })).toBeNull();
});
it('returns null for a valid ISO-8601 datetime', () => {
expect(datetimeMessage('Event start', '2026-08-15T10:30:00.000Z', null)).toBeNull();
});
});