mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-15 09:06:25 +00:00
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import { z } from 'zod';
|
|
import { logger } from '../../test/util';
|
|
import * as memCache from './cache/memory';
|
|
import * as schema from './schema';
|
|
|
|
describe('util/schema', () => {
|
|
beforeEach(() => {
|
|
jest.resetAllMocks();
|
|
memCache.init();
|
|
});
|
|
|
|
it('validates data', () => {
|
|
const testSchema = z.object({ foo: z.string() });
|
|
const validData = { foo: 'bar' };
|
|
|
|
const res = schema.match(testSchema, validData);
|
|
expect(res).toBeTrue();
|
|
});
|
|
|
|
it('returns false for invalid data', () => {
|
|
const testSchema = z.object({ foo: z.string() });
|
|
const invalidData = { foo: 123 };
|
|
|
|
const res = schema.match(testSchema, invalidData);
|
|
expect(res).toBeFalse();
|
|
|
|
schema.reportErrors();
|
|
expect(logger.logger.warn).not.toHaveBeenCalled();
|
|
});
|
|
|
|
describe('warn', () => {
|
|
it('reports nothing if there are no any reports', () => {
|
|
schema.reportErrors();
|
|
expect(logger.logger.warn).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('reports same warning one time', () => {
|
|
const testSchema = z.object(
|
|
{ foo: z.string() },
|
|
{ description: 'Some test schema' }
|
|
);
|
|
const invalidData = { foo: 42 };
|
|
|
|
schema.match(testSchema, invalidData, 'warn');
|
|
schema.match(testSchema, invalidData, 'warn');
|
|
schema.match(testSchema, invalidData, 'warn');
|
|
schema.match(testSchema, invalidData, 'warn');
|
|
schema.reportErrors();
|
|
|
|
expect(logger.logger.warn).toHaveBeenCalledOnce();
|
|
expect(logger.logger.warn.mock.calls[0]).toMatchObject([
|
|
{ description: 'Some test schema' },
|
|
'Schema validation error',
|
|
]);
|
|
});
|
|
|
|
it('reports unspecified schema', () => {
|
|
const testSchema = z.object({ foo: z.string() });
|
|
const invalidData = { foo: 42 };
|
|
|
|
schema.match(testSchema, invalidData, 'warn');
|
|
schema.reportErrors();
|
|
|
|
expect(logger.logger.warn).toHaveBeenCalledOnce();
|
|
expect(logger.logger.warn.mock.calls[0]).toMatchObject([
|
|
{ description: 'Unspecified schema' },
|
|
'Schema validation error',
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('throw', () => {
|
|
it('throws for invalid data', () => {
|
|
const testSchema = z.object({
|
|
foo: z.string({ invalid_type_error: 'foobar' }),
|
|
});
|
|
const invalidData = { foo: 123 };
|
|
|
|
expect(() => schema.match(testSchema, invalidData, 'throw')).toThrow(
|
|
'foobar'
|
|
);
|
|
});
|
|
});
|
|
});
|