payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
72 lines (71 loc) • 5.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
const _sanitize = require("../config/sanitize");
const _configToJSONSchema = require("./configToJSONSchema");
describe('configToJSONSchema', ()=>{
it('should handle optional arrays with required fields', ()=>{
const config = {
collections: [
{
fields: [
{
name: 'someRequiredField',
type: 'array',
fields: [
{
name: 'someRequiredField',
required: true,
type: 'text'
}
]
}
],
slug: 'test',
timestamps: false
}
]
};
const sanitizedConfig = (0, _sanitize.sanitizeConfig)(config);
const schema = (0, _configToJSONSchema.configToJSONSchema)(sanitizedConfig, 'text');
expect(schema?.definitions?.test).toStrictEqual({
additionalProperties: false,
properties: {
id: {
type: 'string'
},
someRequiredField: {
items: {
additionalProperties: false,
properties: {
id: {
type: [
'string',
'null'
]
},
someRequiredField: {
type: 'string'
}
},
required: [
'someRequiredField'
],
type: 'object'
},
type: [
'array',
'null'
]
}
},
required: [
'id'
],
title: 'Test',
type: 'object'
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IHNhbml0aXplQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3Nhbml0aXplJ1xuaW1wb3J0IHsgY29uZmlnVG9KU09OU2NoZW1hIH0gZnJvbSAnLi9jb25maWdUb0pTT05TY2hlbWEnXG5cbmRlc2NyaWJlKCdjb25maWdUb0pTT05TY2hlbWEnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgaGFuZGxlIG9wdGlvbmFsIGFycmF5cyB3aXRoIHJlcXVpcmVkIGZpZWxkcycsICgpID0+IHtcbiAgICBjb25zdCBjb25maWc6IENvbmZpZyA9IHtcbiAgICAgIGNvbGxlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3NvbWVSZXF1aXJlZEZpZWxkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ3NvbWVSZXF1aXJlZEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2x1ZzogJ3Rlc3QnLFxuICAgICAgICAgIHRpbWVzdGFtcHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRDb25maWcgPSBzYW5pdGl6ZUNvbmZpZyhjb25maWcpXG4gICAgY29uc3Qgc2NoZW1hID0gY29uZmlnVG9KU09OU2NoZW1hKHNhbml0aXplZENvbmZpZywgJ3RleHQnKVxuXG4gICAgZXhwZWN0KHNjaGVtYT8uZGVmaW5pdGlvbnM/LnRlc3QpLnRvU3RyaWN0RXF1YWwoe1xuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICBzb21lUmVxdWlyZWRGaWVsZDoge1xuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogWydzdHJpbmcnLCAnbnVsbCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzb21lUmVxdWlyZWRGaWVsZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3NvbWVSZXF1aXJlZEZpZWxkJ10sXG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGU6IFsnYXJyYXknLCAnbnVsbCddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiBbJ2lkJ10sXG4gICAgICB0aXRsZTogJ1Rlc3QnLFxuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmllbGRzIiwibmFtZSIsInR5cGUiLCJyZXF1aXJlZCIsInNsdWciLCJ0aW1lc3RhbXBzIiwic2FuaXRpemVkQ29uZmlnIiwic2FuaXRpemVDb25maWciLCJzY2hlbWEiLCJjb25maWdUb0pTT05TY2hlbWEiLCJleHBlY3QiLCJkZWZpbml0aW9ucyIsInRlc3QiLCJ0b1N0cmljdEVxdWFsIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiaWQiLCJzb21lUmVxdWlyZWRGaWVsZCIsIml0ZW1zIiwidGl0bGUiXSwibWFwcGluZ3MiOiI7Ozs7MEJBRStCO29DQUNJO0FBRW5DQSxTQUFTLHNCQUFzQjtJQUM3QkMsR0FBRyxzREFBc0Q7UUFDdkQsTUFBTUMsU0FBaUI7WUFDckJDLGFBQWE7Z0JBQ1g7b0JBQ0VDLFFBQVE7d0JBQ047NEJBQ0VDLE1BQU07NEJBQ05DLE1BQU07NEJBQ05GLFFBQVE7Z0NBQ047b0NBQ0VDLE1BQU07b0NBQ05FLFVBQVU7b0NBQ1ZELE1BQU07Z0NBQ1I7NkJBQ0Q7d0JBQ0g7cUJBQ0Q7b0JBQ0RFLE1BQU07b0JBQ05DLFlBQVk7Z0JBQ2Q7YUFDRDtRQUNIO1FBRUEsTUFBTUMsa0JBQWtCQyxJQUFBQSx3QkFBYyxFQUFDVDtRQUN2QyxNQUFNVSxTQUFTQyxJQUFBQSxzQ0FBa0IsRUFBQ0gsaUJBQWlCO1FBRW5ESSxPQUFPRixRQUFRRyxhQUFhQyxNQUFNQyxhQUFhLENBQUM7WUFDOUNDLHNCQUFzQjtZQUN0QkMsWUFBWTtnQkFDVkMsSUFBSTtvQkFDRmQsTUFBTTtnQkFDUjtnQkFDQWUsbUJBQW1CO29CQUNqQkMsT0FBTzt3QkFDTEosc0JBQXNCO3dCQUN0QkMsWUFBWTs0QkFDVkMsSUFBSTtnQ0FDRmQsTUFBTTtvQ0FBQztvQ0FBVTtpQ0FBTzs0QkFDMUI7NEJBQ0FlLG1CQUFtQjtnQ0FDakJmLE1BQU07NEJBQ1I7d0JBQ0Y7d0JBQ0FDLFVBQVU7NEJBQUM7eUJBQW9CO3dCQUMvQkQsTUFBTTtvQkFDUjtvQkFDQUEsTUFBTTt3QkFBQzt3QkFBUztxQkFBTztnQkFDekI7WUFDRjtZQUNBQyxVQUFVO2dCQUFDO2FBQUs7WUFDaEJnQixPQUFPO1lBQ1BqQixNQUFNO1FBQ1I7SUFDRjtBQUNGIn0=