Skip to content

Commit 5e56bca

Browse files
authored
Fix Enum naming and test (#363)
* Fix Enum naming and test * Bump Version
1 parent 6d71d1c commit 5e56bca

10 files changed

Lines changed: 283 additions & 7 deletions

File tree

multiapi-engine/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.sngular</groupId>
66
<artifactId>multiapi-engine</artifactId>
7-
<version>6.2.0</version>
7+
<version>6.2.1</version>
88
<packaging>jar</packaging>
99

1010
<properties>

multiapi-engine/src/main/java/com/sngular/api/generator/plugin/common/tools/ModelBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,8 @@ private static SchemaFieldObject processEnumField(
789789
break;
790790
case TypeConstants.STRING:
791791
default:
792-
enumValuesMap.put(StringUtils.upperCase(valueName), '"' + enumValue + '"');
792+
enumValuesMap.put(StringUtils.replace(StringUtils.upperCase(valueName), " ", "_"),
793+
'"' + enumValue + '"');
793794
break;
794795
}
795796
}

multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorFixtures.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,18 @@ public final class OpenApiGeneratorFixtures {
392392
.build()
393393
);
394394

395+
static final List<SpecFile> TEST_CREATE_DTO_WITH_ENUM = List.of(
396+
SpecFile
397+
.builder()
398+
.filePath("openapigenerator/testCreateDTOWithEnum/api-test.yml")
399+
.apiPackage("com.sngular.multifileplugin.testCreateDTOWithEnum")
400+
.modelPackage("com.sngular.multifileplugin.testCreateDTOWithEnum.model")
401+
.clientPackage("com.sngular.multifileplugin.testCreateDTOWithEnum.client")
402+
.modelNameSuffix("DTO")
403+
.useLombokModelAnnotation(true)
404+
.build()
405+
);
406+
395407
static final List<SpecFile> TEST_CREATE_BASIC_DTO = List.of(
396408
SpecFile
397409
.builder()
@@ -1391,6 +1403,30 @@ static Function<Path, Boolean> validateCreateDTO() {
13911403
return path -> commonTest(path, expectedTestApiFile, expectedTestApiModelFiles, DEFAULT_TARGET_API, DEFAULT_MODEL_API, Collections.emptyList(), DEFAULT_EXCEPTION_API);
13921404
}
13931405

1406+
static Function<Path, Boolean> validateCreateDTOWithEnum() {
1407+
1408+
final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/testCreateDTOWithEnum";
1409+
1410+
final String DEFAULT_MODEL_API = "generated/com/sngular/multifileplugin/testCreateDTOWithEnum/model";
1411+
1412+
final String DEFAULT_EXCEPTION_API = "generated/com/sngular/multifileplugin/testCreateDTOWithEnum/model/exception";
1413+
1414+
final String COMMON_PATH = "openapigenerator/testCreateDTOWithEnum/";
1415+
1416+
final String ASSETS_PATH = COMMON_PATH + "assets/";
1417+
1418+
final List<String> expectedTestApiFile = List.of(
1419+
ASSETS_PATH + "TestApi.java"
1420+
);
1421+
1422+
final List<String> expectedTestApiModelFiles = List.of(
1423+
ASSETS_PATH + "model/AddressDTO.java",
1424+
ASSETS_PATH + "model/TestDTO.java"
1425+
);
1426+
1427+
return path -> commonTest(path, expectedTestApiFile, expectedTestApiModelFiles, DEFAULT_TARGET_API, DEFAULT_MODEL_API, Collections.emptyList(), DEFAULT_EXCEPTION_API);
1428+
}
1429+
13941430
static Function<Path, Boolean> validateCreateBasicDTO() {
13951431

13961432
final String DEFAULT_TARGET_API = "generated/com/sngular/multifileplugin/testCreateBasicDTO";

multiapi-engine/src/test/java/com/sngular/api/generator/plugin/openapi/OpenApiGeneratorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ static Stream<Arguments> fileSpecToProcess() {
103103
OpenApiGeneratorFixtures.validateValidationAnnotationsLombok(SPRING_BOOT_VERSION)),
104104
Arguments.of("testCreateDTO", OpenApiGeneratorFixtures.TEST_CREATE_DTO,
105105
OpenApiGeneratorFixtures.validateCreateDTO()),
106+
Arguments.of("testCreateDTOWithEnum", OpenApiGeneratorFixtures.TEST_CREATE_DTO_WITH_ENUM,
107+
OpenApiGeneratorFixtures.validateCreateDTOWithEnum()),
106108
Arguments.of("testCreateBasicDTO", OpenApiGeneratorFixtures.TEST_CREATE_BASIC_DTO,
107109
OpenApiGeneratorFixtures.validateCreateBasicDTO()),
108110
Arguments.of("testIssueFaker", OpenApiGeneratorFixtures.TEST_ISSUE_FAKER,
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
openapi: "3.0.0"
3+
info:
4+
contact:
5+
name: Os3 Team
6+
email: os3-info@sngular.com
7+
version: 1.0.0
8+
title: Testing example file
9+
license:
10+
name: MIT
11+
description: Testing example file
12+
servers:
13+
- url: http://localhost:8080/v1
14+
tags:
15+
- name: testAdditionalProperties
16+
description: Test service
17+
paths:
18+
/test:
19+
summary: testCreateDTO
20+
get:
21+
summary: testCreateDTO
22+
description: Test File for SCC MultiApi Plugin.
23+
tags:
24+
- test
25+
operationId: testCreateDTO
26+
responses:
27+
'200':
28+
$ref: '#/components/responses/testCreate'
29+
components:
30+
responses:
31+
testCreate:
32+
description: An object with additional properties
33+
content:
34+
application/json:
35+
schema:
36+
$ref: '#/components/schemas/test'
37+
schemas:
38+
test:
39+
type: object
40+
required:
41+
- id
42+
- age
43+
- properties
44+
properties:
45+
id:
46+
type: string
47+
age:
48+
type: number
49+
format: int32
50+
properties:
51+
type: string
52+
enum:
53+
- Enum Value 1
54+
- Enum Value 2
55+
- Enum Value 3
56+
address:
57+
type: object
58+
required:
59+
- country
60+
- city
61+
properties:
62+
street:
63+
type: string
64+
country:
65+
type: string
66+
enum:
67+
- Country ES
68+
- Country EN
69+
- Country PT
70+
- Country TR
71+
city:
72+
type: string
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.sngular.multifileplugin.testCreateDTOWithEnum;
2+
3+
import java.util.Optional;
4+
import java.util.List;
5+
import java.util.Map;
6+
import javax.validation.Valid;
7+
8+
import io.swagger.v3.oas.annotations.Operation;
9+
import io.swagger.v3.oas.annotations.Parameter;
10+
import io.swagger.v3.oas.annotations.media.Content;
11+
import io.swagger.v3.oas.annotations.media.Schema;
12+
import io.swagger.v3.oas.annotations.responses.ApiResponse;
13+
import org.springframework.http.MediaType;
14+
import org.springframework.http.HttpStatus;
15+
import org.springframework.http.ResponseEntity;
16+
import org.springframework.web.bind.annotation.*;
17+
import org.springframework.web.context.request.NativeWebRequest;
18+
19+
import com.sngular.multifileplugin.testCreateDTOWithEnum.model.TestDTO;
20+
21+
public interface TestApi {
22+
23+
/**
24+
* GET /test: testCreateDTO
25+
* @return An object with additional properties; (status code 200)
26+
*/
27+
28+
@Operation(
29+
operationId = "testCreateDTO",
30+
summary = "testCreateDTO",
31+
tags = {"test"},
32+
responses = {
33+
@ApiResponse(responseCode = "200", description = "An object with additional properties", content = @Content(mediaType = "application/json", schema = @Schema(implementation = TestDTO.class)))
34+
}
35+
)
36+
@RequestMapping(
37+
method = RequestMethod.GET,
38+
value = "/test",
39+
produces = {"application/json"}
40+
)
41+
42+
default ResponseEntity<TestDTO> testCreateDTO() {
43+
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
44+
}
45+
46+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.sngular.multifileplugin.testCreateDTOWithEnum.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonValue;
5+
import lombok.Builder;
6+
import lombok.NonNull;
7+
import lombok.Value;
8+
import lombok.extern.jackson.Jacksonized;
9+
10+
@Value
11+
public class AddressDTO {
12+
13+
@JsonProperty(value ="country")
14+
@NonNull
15+
private Country country;
16+
17+
public enum Country {
18+
COUNTRY_ES("Country ES"),
19+
COUNTRY_TR("Country TR"),
20+
COUNTRY_EN("Country EN"),
21+
COUNTRY_PT("Country PT");
22+
23+
private String value;
24+
25+
Country(String value) {
26+
this.value = value;
27+
}
28+
29+
@JsonValue
30+
public String getValue() {
31+
return value;
32+
}
33+
34+
@Override
35+
public String toString() {
36+
return String.valueOf(value);
37+
}
38+
}
39+
40+
@JsonProperty(value ="city")
41+
@NonNull
42+
private String city;
43+
44+
@JsonProperty(value ="street")
45+
private String street;
46+
47+
48+
@Builder
49+
@Jacksonized
50+
private AddressDTO(@NonNull Country country, @NonNull String city, String street) {
51+
this.country = country;
52+
this.city = city;
53+
this.street = street;
54+
55+
}
56+
57+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.sngular.multifileplugin.testCreateDTOWithEnum.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonValue;
5+
import java.math.BigDecimal;
6+
import lombok.Builder;
7+
import lombok.NonNull;
8+
import lombok.Value;
9+
import lombok.extern.jackson.Jacksonized;
10+
11+
@Value
12+
public class TestDTO {
13+
14+
@JsonProperty(value ="properties")
15+
@NonNull
16+
private Properties properties;
17+
18+
public enum Properties {
19+
ENUM_VALUE_1("Enum Value 1"),
20+
ENUM_VALUE_3("Enum Value 3"),
21+
ENUM_VALUE_2("Enum Value 2");
22+
23+
private String value;
24+
25+
Properties(String value) {
26+
this.value = value;
27+
}
28+
29+
@JsonValue
30+
public String getValue() {
31+
return value;
32+
}
33+
34+
@Override
35+
public String toString() {
36+
return String.valueOf(value);
37+
}
38+
}
39+
40+
@JsonProperty(value ="id")
41+
@NonNull
42+
private String id;
43+
44+
@JsonProperty(value ="address")
45+
private AddressDTO address;
46+
47+
@JsonProperty(value ="age")
48+
@NonNull
49+
private BigDecimal age;
50+
51+
52+
@Builder
53+
@Jacksonized
54+
private TestDTO(@NonNull Properties properties, @NonNull String id, AddressDTO address, @NonNull BigDecimal age) {
55+
this.properties = properties;
56+
this.id = id;
57+
this.address = address;
58+
this.age = age;
59+
60+
}
61+
62+
}

scs-multiapi-gradle-plugin/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ repositories {
2020
}
2121

2222
group = 'com.sngular'
23-
version = '6.2.0'
23+
version = '6.2.1'
2424

2525
def SCSMultiApiPluginGroupId = group
2626
def SCSMultiApiPluginVersion = version
@@ -30,7 +30,7 @@ dependencies {
3030
shadow localGroovy()
3131
shadow gradleApi()
3232

33-
implementation 'com.sngular:multiapi-engine:6.2.0'
33+
implementation 'com.sngular:multiapi-engine:6.2.1'
3434
testImplementation 'org.assertj:assertj-core:3.24.2'
3535
testImplementation 'com.puppycrawl.tools:checkstyle:10.12.3'
3636
testImplementation 'org.junit.platform:junit-platform-launcher:1.9.2'
@@ -99,7 +99,7 @@ testing {
9999

100100
integrationTest(JvmTestSuite) {
101101
dependencies {
102-
implementation 'com.sngular:scs-multiapi-gradle-plugin:6.2.0'
102+
implementation 'com.sngular:scs-multiapi-gradle-plugin:6.2.1'
103103
implementation 'org.assertj:assertj-core:3.24.2'
104104
}
105105

scs-multiapi-maven-plugin/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.sngular</groupId>
66
<artifactId>scs-multiapi-maven-plugin</artifactId>
7-
<version>6.2.0</version>
7+
<version>6.2.1</version>
88
<packaging>maven-plugin</packaging>
99

1010
<name>AsyncApi - OpenApi Code Generator Maven Plugin</name>
@@ -271,7 +271,7 @@
271271
<dependency>
272272
<groupId>com.sngular</groupId>
273273
<artifactId>multiapi-engine</artifactId>
274-
<version>6.2.0</version>
274+
<version>6.2.1</version>
275275
</dependency>
276276
<dependency>
277277
<groupId>org.apache.maven</groupId>

0 commit comments

Comments
 (0)