Skip to content

Commit d237343

Browse files
committed
implement a test for "dateTypeOverride" function
1 parent e4f35a1 commit d237343

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

src/utils/dateTypeOverride.spec.ts

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
import { dateTypeOverride, RequiredFields } from './dateTypeOverride';
2+
3+
describe('dateTypeOverride', () => {
4+
it('should replace the base type for the model combination {base: "string", format: "data-time"}', async () => {
5+
const expected = JSON.parse(JSON.stringify(models)) as RequiredFields<ModelOnlyName>[];
6+
expected[1].properties[1].base = 'Date';
7+
if (expected[3].link?.properties[0].base) {
8+
expected[3].link.properties[0].base = 'Date';
9+
}
10+
11+
const result = dateTypeOverride(models);
12+
expect(result).toEqual(expected);
13+
});
14+
});
15+
16+
type ModelOnlyName = { name: string };
17+
18+
const baseModel: Omit<RequiredFields<ModelOnlyName>, 'export' | 'base' | 'name'> = {
19+
link: null,
20+
properties: [],
21+
};
22+
23+
const models: RequiredFields<ModelOnlyName>[] = [
24+
{
25+
...baseModel,
26+
name: 'ParentType',
27+
export: 'interface',
28+
base: 'any',
29+
properties: [
30+
{
31+
...baseModel,
32+
name: 'name',
33+
export: 'interface',
34+
base: 'any',
35+
},
36+
],
37+
},
38+
{
39+
...baseModel,
40+
name: 'ExampleType',
41+
export: 'interface',
42+
base: 'any',
43+
properties: [
44+
{
45+
...baseModel,
46+
name: 'id',
47+
export: 'generic',
48+
base: 'number',
49+
},
50+
{
51+
...baseModel,
52+
name: 'dateTime',
53+
export: 'generic',
54+
base: 'string',
55+
format: 'date-time',
56+
},
57+
{
58+
...baseModel,
59+
name: 'date',
60+
export: 'generic',
61+
base: 'string',
62+
format: 'date',
63+
},
64+
{
65+
...baseModel,
66+
name: 'dateTimeNullable',
67+
export: 'generic',
68+
base: 'string',
69+
format: 'date',
70+
},
71+
{
72+
...baseModel,
73+
name: 'dateNullable',
74+
export: 'generic',
75+
base: 'string',
76+
format: 'date',
77+
},
78+
],
79+
},
80+
{
81+
...baseModel,
82+
name: 'InheritType',
83+
export: 'all-of',
84+
base: 'any',
85+
properties: [
86+
{
87+
...baseModel,
88+
name: '',
89+
export: 'reference',
90+
base: 'ParentType',
91+
},
92+
{
93+
...baseModel,
94+
name: '',
95+
export: 'reference',
96+
base: 'ExampleType',
97+
},
98+
],
99+
},
100+
{
101+
...baseModel,
102+
name: 'WrappedInArray',
103+
export: 'array',
104+
base: 'any',
105+
link: {
106+
...baseModel,
107+
name: '',
108+
export: 'interface',
109+
base: 'any',
110+
properties: [
111+
{
112+
...baseModel,
113+
name: 'dateTime',
114+
export: 'generic',
115+
base: 'string',
116+
format: 'date-time',
117+
},
118+
{
119+
...baseModel,
120+
name: 'date',
121+
export: 'generic',
122+
base: 'string',
123+
format: 'date',
124+
},
125+
{
126+
...baseModel,
127+
name: 'dateTimeNullable',
128+
export: 'generic',
129+
base: 'string',
130+
format: 'date',
131+
},
132+
{
133+
...baseModel,
134+
name: 'dateNullable',
135+
export: 'generic',
136+
base: 'string',
137+
format: 'date',
138+
},
139+
],
140+
},
141+
},
142+
];

0 commit comments

Comments
 (0)