Skip to content

Commit 6878b2f

Browse files
test: add full spec test for PaymentAccountDetailsResponse circular references
Co-authored-by: stijnvanhulle <5904681+stijnvanhulle@users.noreply.github.com>
1 parent 192c505 commit 6878b2f

File tree

3 files changed

+203
-264
lines changed

3 files changed

+203
-264
lines changed

packages/plugin-oas/mocks/circularDiscriminator.json

Lines changed: 0 additions & 70 deletions
This file was deleted.

packages/plugin-oas/src/utils/__snapshots__/circularDiscriminator.test.ts.snap renamed to packages/plugin-oas/src/utils/__snapshots__/fullSpecCircular.test.ts.snap

Lines changed: 131 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3-
exports[`Circular Discriminator References > should not create circular references when child extends discriminator parent via allOf > ACHDetailsResponse-tree 1`] = `
3+
exports[`Full Spec Circular Discriminator References > should handle full PaymentAccountDetailsResponse spec without circular refs > ACHDetailsResponse-tree 1`] = `
44
[
55
{
66
"args": [
@@ -17,6 +17,39 @@ exports[`Circular Discriminator References > should not create circular referenc
1717
"args": {
1818
"additionalProperties": [],
1919
"properties": {
20+
"account_class": [
21+
{
22+
"args": [
23+
{
24+
"args": {
25+
"$ref": "#/components/schemas/AccountClass",
26+
"isImportable": true,
27+
"name": "accountClass",
28+
"path": "accountClass.ts",
29+
},
30+
"keyword": "ref",
31+
},
32+
],
33+
"keyword": "and",
34+
},
35+
{
36+
"args": {
37+
"format": undefined,
38+
"type": undefined,
39+
},
40+
"keyword": "schema",
41+
},
42+
{
43+
"keyword": "nullable",
44+
},
45+
{
46+
"args": "account_class",
47+
"keyword": "name",
48+
},
49+
{
50+
"keyword": "nullish",
51+
},
52+
],
2053
"account_number": [
2154
{
2255
"keyword": "string",
@@ -33,21 +66,42 @@ exports[`Circular Discriminator References > should not create circular referenc
3366
"keyword": "name",
3467
},
3568
],
36-
"type": [
69+
"account_type": [
3770
{
38-
"args": {
39-
"asConst": false,
40-
"items": [
41-
{
42-
"format": "string",
43-
"name": ""ACH"",
44-
"value": "ACH",
71+
"args": [
72+
{
73+
"args": {
74+
"$ref": "#/components/schemas/AccountType",
75+
"isImportable": true,
76+
"name": "accountType",
77+
"path": "accountType.ts",
4578
},
46-
],
47-
"name": "ACHDetailsResponseType",
48-
"typeName": "ACHDetailsResponseType",
79+
"keyword": "ref",
80+
},
81+
],
82+
"keyword": "and",
83+
},
84+
{
85+
"args": {
86+
"format": undefined,
87+
"type": undefined,
4988
},
50-
"keyword": "enum",
89+
"keyword": "schema",
90+
},
91+
{
92+
"keyword": "nullable",
93+
},
94+
{
95+
"args": "account_type",
96+
"keyword": "name",
97+
},
98+
{
99+
"keyword": "nullish",
100+
},
101+
],
102+
"payment_instrument_id": [
103+
{
104+
"keyword": "string",
51105
},
52106
{
53107
"args": {
@@ -57,44 +111,10 @@ exports[`Circular Discriminator References > should not create circular referenc
57111
"keyword": "schema",
58112
},
59113
{
60-
"args": "type",
114+
"args": "payment_instrument_id",
61115
"keyword": "name",
62116
},
63117
],
64-
},
65-
},
66-
"keyword": "object",
67-
},
68-
],
69-
"keyword": "and",
70-
},
71-
{
72-
"args": {
73-
"format": undefined,
74-
"type": "object",
75-
},
76-
"keyword": "schema",
77-
},
78-
]
79-
`;
80-
81-
exports[`Circular Discriminator References > should not create circular references when child extends discriminator parent via allOf > DomesticWireDetailsResponse-tree 1`] = `
82-
[
83-
{
84-
"args": [
85-
{
86-
"args": {
87-
"$ref": "#/components/schemas/PaymentAccountDetailsResponse",
88-
"isImportable": true,
89-
"name": "paymentAccountDetailsResponse",
90-
"path": "paymentAccountDetailsResponse.ts",
91-
},
92-
"keyword": "ref",
93-
},
94-
{
95-
"args": {
96-
"additionalProperties": [],
97-
"properties": {
98118
"routing_number": [
99119
{
100120
"keyword": "string",
@@ -114,18 +134,12 @@ exports[`Circular Discriminator References > should not create circular referenc
114134
"type": [
115135
{
116136
"args": {
117-
"asConst": false,
118-
"items": [
119-
{
120-
"format": "string",
121-
"name": ""DOMESTIC_WIRE"",
122-
"value": "DOMESTIC_WIRE",
123-
},
124-
],
125-
"name": "DomesticWireDetailsResponseType",
126-
"typeName": "DomesticWireDetailsResponseType",
137+
"$ref": "#/components/schemas/PaymentDetailsTypeResponse",
138+
"isImportable": true,
139+
"name": "paymentDetailsTypeResponse",
140+
"path": "paymentDetailsTypeResponse.ts",
127141
},
128-
"keyword": "enum",
142+
"keyword": "ref",
129143
},
130144
{
131145
"args": {
@@ -156,10 +170,41 @@ exports[`Circular Discriminator References > should not create circular referenc
156170
]
157171
`;
158172

159-
exports[`Circular Discriminator References > should not create circular references when child extends discriminator parent via allOf > PaymentAccountDetailsResponse-tree 1`] = `
173+
exports[`Full Spec Circular Discriminator References > should handle full PaymentAccountDetailsResponse spec without circular refs > PaymentAccountDetailsResponse-tree 1`] = `
160174
[
161175
{
162176
"args": [
177+
{
178+
"args": [
179+
{
180+
"args": {
181+
"$ref": "#/components/schemas/DomesticWireDetailsResponse",
182+
"isImportable": true,
183+
"name": "domesticWireDetailsResponse",
184+
"path": "domesticWireDetailsResponse.ts",
185+
},
186+
"keyword": "ref",
187+
},
188+
{
189+
"args": {
190+
"properties": {
191+
"type": [
192+
{
193+
"args": {
194+
"format": "string",
195+
"name": "DOMESTIC_WIRE",
196+
"value": "DOMESTIC_WIRE",
197+
},
198+
"keyword": "const",
199+
},
200+
],
201+
},
202+
},
203+
"keyword": "object",
204+
},
205+
],
206+
"keyword": "and",
207+
},
163208
{
164209
"args": [
165210
{
@@ -195,10 +240,10 @@ exports[`Circular Discriminator References > should not create circular referenc
195240
"args": [
196241
{
197242
"args": {
198-
"$ref": "#/components/schemas/DomesticWireDetailsResponse",
243+
"$ref": "#/components/schemas/ChequeDetailsResponse",
199244
"isImportable": true,
200-
"name": "domesticWireDetailsResponse",
201-
"path": "domesticWireDetailsResponse.ts",
245+
"name": "chequeDetailsResponse",
246+
"path": "chequeDetailsResponse.ts",
202247
},
203248
"keyword": "ref",
204249
},
@@ -209,8 +254,8 @@ exports[`Circular Discriminator References > should not create circular referenc
209254
{
210255
"args": {
211256
"format": "string",
212-
"name": "DOMESTIC_WIRE",
213-
"value": "DOMESTIC_WIRE",
257+
"name": "CHEQUE",
258+
"value": "CHEQUE",
214259
},
215260
"keyword": "const",
216261
},
@@ -222,53 +267,39 @@ exports[`Circular Discriminator References > should not create circular referenc
222267
],
223268
"keyword": "and",
224269
},
225-
],
226-
"keyword": "union",
227-
},
228-
{
229-
"args": {
230-
"format": undefined,
231-
"type": "object",
232-
},
233-
"keyword": "schema",
234-
},
235-
]
236-
`;
237-
238-
exports[`Circular Discriminator References > should still add discriminator constraint for non-allOf references > Payment-tree 1`] = `
239-
[
240-
{
241-
"args": {
242-
"additionalProperties": [],
243-
"properties": {
244-
"account": [
270+
{
271+
"args": [
245272
{
246273
"args": {
247-
"$ref": "#/components/schemas/PaymentAccountDetailsResponse",
274+
"$ref": "#/components/schemas/InternationalWireDetailsResponse",
248275
"isImportable": true,
249-
"name": "paymentAccountDetailsResponse",
250-
"path": "paymentAccountDetailsResponse.ts",
276+
"name": "internationalWireDetailsResponse",
277+
"path": "internationalWireDetailsResponse.ts",
251278
},
252279
"keyword": "ref",
253280
},
254281
{
255282
"args": {
256-
"format": undefined,
257-
"type": "object",
283+
"properties": {
284+
"type": [
285+
{
286+
"args": {
287+
"format": "string",
288+
"name": "INTERNATIONAL_WIRE",
289+
"value": "INTERNATIONAL_WIRE",
290+
},
291+
"keyword": "const",
292+
},
293+
],
294+
},
258295
},
259-
"keyword": "schema",
260-
},
261-
{
262-
"args": "account",
263-
"keyword": "name",
264-
},
265-
{
266-
"keyword": "optional",
296+
"keyword": "object",
267297
},
268298
],
299+
"keyword": "and",
269300
},
270-
},
271-
"keyword": "object",
301+
],
302+
"keyword": "union",
272303
},
273304
{
274305
"args": {

0 commit comments

Comments
 (0)