39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
|
|
import { intervalValidation } from './IntervalField';
|
|
|
|
describe('intervalValidation', () => {
|
|
it('rejects empty value with invalid duration format message', async () => {
|
|
const schema = intervalValidation();
|
|
await expect(schema.validate('')).rejects.toThrow(
|
|
'Invalid duration format. Use formats like 5m, 1h30m, 7d, or 300s'
|
|
);
|
|
});
|
|
|
|
it('accepts simple minute values', async () => {
|
|
const schema = intervalValidation();
|
|
await expect(schema.validate('1m')).resolves.toBe('1m');
|
|
await expect(schema.validate('5m')).resolves.toBe('5m');
|
|
});
|
|
|
|
it('accepts complex duration values', async () => {
|
|
const schema = intervalValidation();
|
|
await expect(schema.validate('6h40m')).resolves.toBe('6h40m');
|
|
});
|
|
|
|
it('accepts seconds >= 60s (treated as >= 1 minute)', async () => {
|
|
const schema = intervalValidation();
|
|
await expect(schema.validate('90s')).resolves.toBe('90s');
|
|
});
|
|
|
|
it('rejects sub-minute durations and invalid formats', async () => {
|
|
const schema = intervalValidation();
|
|
await expect(schema.validate('30s')).rejects.toThrow(
|
|
'Minimum interval is 1m'
|
|
);
|
|
await expect(schema.validate('abc')).rejects.toThrow(
|
|
'Invalid duration format. Use formats like 5m, 1h30m, 7d, or 300s'
|
|
);
|
|
});
|
|
});
|