-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathopenapi.test.ts
More file actions
81 lines (76 loc) · 1.77 KB
/
openapi.test.ts
File metadata and controls
81 lines (76 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Utf8, Int64, Bool } from '@apache-arrow/esnext-esm';
import test from 'ava';
import type { Column } from '../schema/column.js';
import { createColumn } from '../schema/column.js';
import { JSONType } from '../types/json.js';
import { oapiDefinitionToColumns } from './openapi.js';
const OAPI_SPEC = {
swagger: '2.0',
info: {
version: '2.0',
title: 'Test API',
description: 'Unit tests APIs',
},
host: 'cloudquery.io',
schemes: ['https'],
consumes: ['application/json'],
produces: ['application/json'],
paths: {},
definitions: {
// eslint-disable-next-line @typescript-eslint/naming-convention
TestDefinition: {
type: 'object',
properties: {
string: {
type: 'string',
},
number: {
type: 'number',
},
integer: {
type: 'integer',
},
boolean: {
type: 'boolean',
},
object: {
$ref: '#/definitions/SomeDefinition',
},
array: {
type: 'array',
items: { $ref: '#/definitions/SomeDefinition' },
},
},
},
},
};
test('should parse spec as expected', (t) => {
const expectedColumns: Column[] = [
createColumn({
name: 'string',
type: new Utf8(),
}),
createColumn({
name: 'number',
type: new Int64(),
}),
createColumn({
name: 'integer',
type: new Int64(),
}),
createColumn({
name: 'boolean',
type: new Bool(),
}),
createColumn({
name: 'object',
type: new JSONType(),
}),
createColumn({
name: 'array',
type: new JSONType(),
}),
];
const columns = oapiDefinitionToColumns(OAPI_SPEC['definitions']['TestDefinition']);
t.deepEqual(columns, expectedColumns);
});