Skip to content

Commit d743b73

Browse files
committed
test: 增加单测
1 parent b9e2e25 commit d743b73

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

test/parsers/ComponentsPaser.test.ts

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,84 @@ test('object', async () => {
252252
]);
253253
});
254254

255+
test('object required inside', async () => {
256+
const parser = new ComponentsParser({
257+
info: {
258+
title: 'test',
259+
version: '1.0.0',
260+
},
261+
openapi: '3.0.0',
262+
paths: {},
263+
components: {
264+
schemas: {
265+
O: {
266+
type: 'object',
267+
nullable: false,
268+
properties: {
269+
B: {
270+
type: 'boolean',
271+
},
272+
S: {
273+
type: 'string',
274+
},
275+
N: {
276+
type: 'number',
277+
},
278+
I: {
279+
type: 'integer',
280+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
281+
// @ts-ignore
282+
required: true,
283+
},
284+
R: {
285+
$ref: '#/components/schemas/R',
286+
},
287+
},
288+
required: ['B', 'S', 'N'],
289+
additionalProperties: true,
290+
},
291+
R: {
292+
type: 'string',
293+
},
294+
},
295+
},
296+
});
297+
298+
const t = parser.parseComponents();
299+
expect(t).toEqual<TypeList>([
300+
{
301+
kind: 'origin',
302+
name: 'O',
303+
type: 'object',
304+
required: true,
305+
children: [
306+
// 已重新排序
307+
{ name: 'B', type: 'boolean', required: true, kind: 'origin' },
308+
{ name: 'I', type: 'number', required: true, kind: 'origin' },
309+
{ name: 'N', type: 'number', required: true, kind: 'origin' },
310+
{
311+
kind: 'alias',
312+
refAble: false,
313+
required: false,
314+
name: 'R',
315+
target: 'R',
316+
origin: 'R',
317+
props: [],
318+
ref: '#/components/schemas/R',
319+
},
320+
{ name: 'S', type: 'string', required: true, kind: 'origin' },
321+
{ name: '[key: string]', type: 'any', required: true, kind: 'origin' },
322+
],
323+
},
324+
{
325+
kind: 'origin',
326+
name: 'R',
327+
type: 'string',
328+
required: false,
329+
},
330+
]);
331+
});
332+
255333
test('array', async () => {
256334
const parser = new ComponentsParser({
257335
info: {

0 commit comments

Comments
 (0)