Skip to content

Commit 4383c0b

Browse files
fanqiewanziMarcel Jacek
authored andcommitted
[Java] add tests when field is nullable and required
1 parent 06b5c47 commit 4383c0b

13 files changed

Lines changed: 1396 additions & 3 deletions

File tree

modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,6 +1369,19 @@ paths:
13691369
$ref: '#/components/schemas/Variable'
13701370
'400':
13711371
description: Invalid Value
1372+
/fake/required-nullable-body:
1373+
get:
1374+
tags:
1375+
- fake
1376+
summary: fields in the response body, required and nullable are both true
1377+
description: ''
1378+
responses:
1379+
'200':
1380+
description: success
1381+
content:
1382+
application/json:
1383+
schema:
1384+
$ref: '#/components/schemas/RequiredNullableBody'
13721385
servers:
13731386
- url: 'http://{server}.swagger.io:{port}/v2'
13741387
description: petstore server
@@ -2768,6 +2781,38 @@ components:
27682781
$ref: '#/components/schemas/ArrayOneOf'
27692782
anyof_prop:
27702783
$ref: '#/components/schemas/ArrayAnyOf'
2784+
NullableEnum:
2785+
type: string
2786+
nullable: true
2787+
enum:
2788+
- custom
2789+
RequiredNullableBody:
2790+
allOf:
2791+
- $ref: '#/components/schemas/NullableClass'
2792+
- type: object
2793+
required:
2794+
- custom_ref_enum
2795+
- custom_enum
2796+
- integer_prop
2797+
- number_prop
2798+
- boolean_prop
2799+
- string_prop
2800+
- date_prop
2801+
- datetime_prop
2802+
- array_nullable_prop
2803+
- array_and_items_nullable_prop
2804+
- array_items_nullable
2805+
- object_nullable_prop
2806+
- object_and_items_nullable_prop
2807+
- object_items_nullable
2808+
properties:
2809+
custom_ref_enum:
2810+
$ref: "#/components/schemas/NullableEnum"
2811+
custom_enum:
2812+
type: string
2813+
nullable: true
2814+
enum:
2815+
- custom
27712816
NestedArrayWithDefaultValues:
27722817
type: object
27732818
properties:

samples/client/petstore/java/okhttp-gson/.openapi-generator/FILES

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ docs/NewPet.md
7979
docs/NewPetCategoryInlineAllof.md
8080
docs/NewPetCategoryInlineAllofAllOfCategoryTag.md
8181
docs/NullableClass.md
82+
docs/NullableEnum.md
8283
docs/NullableShape.md
8384
docs/NumberOnly.md
8485
docs/ObjectWithDeprecatedFields.md
@@ -100,6 +101,7 @@ docs/PropertyNameCollision.md
100101
docs/Quadrilateral.md
101102
docs/QuadrilateralInterface.md
102103
docs/ReadOnlyFirst.md
104+
docs/RequiredNullableBody.md
103105
docs/Scalar.md
104106
docs/ScalarAnyOf.md
105107
docs/ScaleneTriangle.md
@@ -228,6 +230,7 @@ src/main/java/org/openapitools/client/model/NewPet.java
228230
src/main/java/org/openapitools/client/model/NewPetCategoryInlineAllof.java
229231
src/main/java/org/openapitools/client/model/NewPetCategoryInlineAllofAllOfCategoryTag.java
230232
src/main/java/org/openapitools/client/model/NullableClass.java
233+
src/main/java/org/openapitools/client/model/NullableEnum.java
231234
src/main/java/org/openapitools/client/model/NullableShape.java
232235
src/main/java/org/openapitools/client/model/NumberOnly.java
233236
src/main/java/org/openapitools/client/model/ObjectWithDeprecatedFields.java
@@ -248,6 +251,7 @@ src/main/java/org/openapitools/client/model/PropertyNameCollision.java
248251
src/main/java/org/openapitools/client/model/Quadrilateral.java
249252
src/main/java/org/openapitools/client/model/QuadrilateralInterface.java
250253
src/main/java/org/openapitools/client/model/ReadOnlyFirst.java
254+
src/main/java/org/openapitools/client/model/RequiredNullableBody.java
251255
src/main/java/org/openapitools/client/model/Scalar.java
252256
src/main/java/org/openapitools/client/model/ScalarAnyOf.java
253257
src/main/java/org/openapitools/client/model/ScaleneTriangle.java
@@ -265,3 +269,5 @@ src/main/java/org/openapitools/client/model/Value.java
265269
src/main/java/org/openapitools/client/model/Variable.java
266270
src/main/java/org/openapitools/client/model/Whale.java
267271
src/main/java/org/openapitools/client/model/Zebra.java
272+
src/test/java/org/openapitools/client/model/NullableEnumTest.java
273+
src/test/java/org/openapitools/client/model/RequiredNullableBodyTest.java

samples/client/petstore/java/okhttp-gson/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ Class | Method | HTTP request | Description
127127
*FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number |
128128
*FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string |
129129
*FakeApi* | [**fakeRefParameter**](docs/FakeApi.md#fakeRefParameter) | **POST** /fake/pet/{petId}/reference/parameter | fake reference parameter
130+
*FakeApi* | [**fakeRequiredNullableBodyGet**](docs/FakeApi.md#fakeRequiredNullableBodyGet) | **GET** /fake/required-nullable-body | fields in the response body, required and nullable are both true
130131
*FakeApi* | [**fakeUploadRefRequestBodies**](docs/FakeApi.md#fakeUploadRefRequestBodies) | **POST** /fake/pet/{petId}/uploadImage | fake reference parameter
131132
*FakeApi* | [**getFakeArrayofenums**](docs/FakeApi.md#getFakeArrayofenums) | **GET** /fake/array-of-enums | Array of Enums
132133
*FakeApi* | [**getFakeHealth**](docs/FakeApi.md#getFakeHealth) | **GET** /fake/health | Health check endpoint
@@ -240,6 +241,7 @@ Class | Method | HTTP request | Description
240241
- [NewPetCategoryInlineAllof](docs/NewPetCategoryInlineAllof.md)
241242
- [NewPetCategoryInlineAllofAllOfCategoryTag](docs/NewPetCategoryInlineAllofAllOfCategoryTag.md)
242243
- [NullableClass](docs/NullableClass.md)
244+
- [NullableEnum](docs/NullableEnum.md)
243245
- [NullableShape](docs/NullableShape.md)
244246
- [NumberOnly](docs/NumberOnly.md)
245247
- [ObjectWithDeprecatedFields](docs/ObjectWithDeprecatedFields.md)
@@ -260,6 +262,7 @@ Class | Method | HTTP request | Description
260262
- [Quadrilateral](docs/Quadrilateral.md)
261263
- [QuadrilateralInterface](docs/QuadrilateralInterface.md)
262264
- [ReadOnlyFirst](docs/ReadOnlyFirst.md)
265+
- [RequiredNullableBody](docs/RequiredNullableBody.md)
263266
- [Scalar](docs/Scalar.md)
264267
- [ScalarAnyOf](docs/ScalarAnyOf.md)
265268
- [ScaleneTriangle](docs/ScaleneTriangle.md)

samples/client/petstore/java/okhttp-gson/api/openapi.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,6 +1494,21 @@ paths:
14941494
x-internal: true
14951495
x-accepts:
14961496
- application/json
1497+
/fake/required-nullable-body:
1498+
get:
1499+
description: ""
1500+
responses:
1501+
"200":
1502+
content:
1503+
application/json:
1504+
schema:
1505+
$ref: '#/components/schemas/RequiredNullableBody'
1506+
description: success
1507+
summary: "fields in the response body, required and nullable are both true"
1508+
tags:
1509+
- fake
1510+
x-accepts:
1511+
- application/json
14971512
components:
14981513
parameters:
14991514
pet_id:
@@ -2927,6 +2942,62 @@ components:
29272942
- $ref: "#/components/schemas/Height"
29282943
default: 32.1
29292944
type: object
2945+
NullableEnum:
2946+
enum:
2947+
- custom
2948+
nullable: true
2949+
type: string
2950+
RequiredNullableBody:
2951+
allOf:
2952+
- $ref: '#/components/schemas/NullableClass'
2953+
- properties:
2954+
custom_ref_enum:
2955+
$ref: '#/components/schemas/NullableEnum'
2956+
custom_enum:
2957+
enum:
2958+
- custom
2959+
nullable: true
2960+
type: string
2961+
required:
2962+
- array_and_items_nullable_prop
2963+
- array_items_nullable
2964+
- array_nullable_prop
2965+
- boolean_prop
2966+
- custom_enum
2967+
- custom_ref_enum
2968+
- date_prop
2969+
- datetime_prop
2970+
- integer_prop
2971+
- number_prop
2972+
- object_and_items_nullable_prop
2973+
- object_items_nullable
2974+
- object_nullable_prop
2975+
- string_prop
2976+
type: object
2977+
example:
2978+
number_prop: 6.027456183070403
2979+
datetime_prop: 2000-01-23T04:56:07.000+00:00
2980+
custom_ref_enum: custom
2981+
boolean_prop: true
2982+
string_prop: string_prop
2983+
array_nullable_prop:
2984+
- "{}"
2985+
- "{}"
2986+
custom_enum: custom
2987+
integer_prop: 0
2988+
array_and_items_nullable_prop:
2989+
- "{}"
2990+
- "{}"
2991+
object_items_nullable:
2992+
key: "{}"
2993+
object_nullable_prop:
2994+
key: "{}"
2995+
object_and_items_nullable_prop:
2996+
key: "{}"
2997+
date_prop: 2000-01-23
2998+
array_items_nullable:
2999+
- "{}"
3000+
- "{}"
29303001
_foo_get_default_response:
29313002
example:
29323003
string:

samples/client/petstore/java/okhttp-gson/docs/FakeApi.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2*
99
| [**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | |
1010
| [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | |
1111
| [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | |
12+
| [**fakeRequiredNullableBodyGet**](FakeApi.md#fakeRequiredNullableBodyGet) | **GET** /fake/required-nullable-body | fields in the response body, required and nullable are both true |
1213
| [**fakeRefParameter**](FakeApi.md#fakeRefParameter) | **POST** /fake/pet/{petId}/reference/parameter | fake reference parameter |
1314
| [**fakeUploadRefRequestBodies**](FakeApi.md#fakeUploadRefRequestBodies) | **POST** /fake/pet/{petId}/uploadImage | fake reference parameter |
1415
| [**getFakeArrayofenums**](FakeApi.md#getFakeArrayofenums) | **GET** /fake/array-of-enums | Array of Enums |
@@ -395,6 +396,64 @@ No authorization required
395396
|-------------|-------------|------------------|
396397
| **200** | successful operation | - |
397398

399+
<a id="fakeRequiredNullableBodyGet"></a>
400+
# **fakeRequiredNullableBodyGet**
401+
> RequiredNullableBody fakeRequiredNullableBodyGet()
402+
403+
fields in the response body, required and nullable are both true
404+
405+
406+
407+
### Example
408+
```java
409+
// Import classes:
410+
import org.openapitools.client.ApiClient;
411+
import org.openapitools.client.ApiException;
412+
import org.openapitools.client.Configuration;
413+
import org.openapitools.client.models.*;
414+
import org.openapitools.client.api.FakeApi;
415+
416+
public class Example {
417+
public static void main(String[] args) {
418+
ApiClient defaultClient = Configuration.getDefaultApiClient();
419+
defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
420+
421+
FakeApi apiInstance = new FakeApi(defaultClient);
422+
try {
423+
RequiredNullableBody result = apiInstance.fakeRequiredNullableBodyGet();
424+
System.out.println(result);
425+
} catch (ApiException e) {
426+
System.err.println("Exception when calling FakeApi#fakeRequiredNullableBodyGet");
427+
System.err.println("Status code: " + e.getCode());
428+
System.err.println("Reason: " + e.getResponseBody());
429+
System.err.println("Response headers: " + e.getResponseHeaders());
430+
e.printStackTrace();
431+
}
432+
}
433+
}
434+
```
435+
436+
### Parameters
437+
This endpoint does not need any parameter.
438+
439+
### Return type
440+
441+
[**RequiredNullableBody**](RequiredNullableBody.md)
442+
443+
### Authorization
444+
445+
No authorization required
446+
447+
### HTTP request headers
448+
449+
- **Content-Type**: Not defined
450+
- **Accept**: application/json
451+
452+
### HTTP response details
453+
| Status code | Description | Response headers |
454+
|-------------|-------------|------------------|
455+
| **200** | success | - |
456+
398457
<a id="fakeUploadRefRequestBodies"></a>
399458
# **fakeUploadRefRequestBodies**
400459
> ModelApiResponse fakeUploadRefRequestBodies(petId, additionalMetadata, _file)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
3+
# NullableEnum
4+
5+
## Enum
6+
7+
8+
* `CUSTOM` (value: `"custom"`)
9+
10+
11+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
3+
# RequiredNullableBody
4+
5+
6+
## Properties
7+
8+
| Name | Type | Description | Notes |
9+
|------------ | ------------- | ------------- | -------------|
10+
|**integerProp** | **Integer** | | |
11+
|**numberProp** | **BigDecimal** | | |
12+
|**booleanProp** | **Boolean** | | |
13+
|**stringProp** | **String** | | |
14+
|**dateProp** | **LocalDate** | | |
15+
|**datetimeProp** | **OffsetDateTime** | | |
16+
|**arrayNullableProp** | **List&lt;Object&gt;** | | |
17+
|**arrayAndItemsNullableProp** | **List&lt;Object&gt;** | | |
18+
|**arrayItemsNullable** | **List&lt;Object&gt;** | | |
19+
|**objectNullableProp** | **Map&lt;String, Object&gt;** | | |
20+
|**objectAndItemsNullableProp** | **Map&lt;String, Object&gt;** | | |
21+
|**objectItemsNullable** | **Map&lt;String, Object&gt;** | | |
22+
|**customRefEnum** | **NullableEnum** | | |
23+
|**customEnum** | [**CustomEnumEnum**](#CustomEnumEnum) | | |
24+
25+
26+
27+
## Enum: CustomEnumEnum
28+
29+
| Name | Value |
30+
|---- | -----|
31+
| CUSTOM | &quot;custom&quot; |
32+
33+
34+

samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
327327
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Quadrilateral.CustomTypeAdapterFactory());
328328
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.QuadrilateralInterface.CustomTypeAdapterFactory());
329329
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ReadOnlyFirst.CustomTypeAdapterFactory());
330+
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.RequiredNullableBody.CustomTypeAdapterFactory());
330331
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Scalar.CustomTypeAdapterFactory());
331332
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ScalarAnyOf.CustomTypeAdapterFactory());
332333
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ScaleneTriangle.CustomTypeAdapterFactory());

0 commit comments

Comments
 (0)