11package com .backbase .oss .codegen .java ;
22
3- import static com .backbase .oss .codegen .java .BoatJavaCodeGen .*;
3+ import com .github .javaparser .StaticJavaParser ;
4+ import com .github .javaparser .ast .body .MethodDeclaration ;
5+ import com .github .javaparser .ast .body .TypeDeclaration ;
6+ import io .swagger .parser .OpenAPIParser ;
7+ import io .swagger .v3 .parser .core .models .ParseOptions ;
8+ import org .junit .jupiter .api .Test ;
9+ import org .junit .jupiter .params .ParameterizedTest ;
10+ import org .junit .jupiter .params .provider .ValueSource ;
11+ import org .openapitools .codegen .CliOption ;
12+ import org .openapitools .codegen .ClientOptInput ;
13+ import org .openapitools .codegen .DefaultGenerator ;
14+ import org .openapitools .codegen .languages .SpringCodegen ;
415
16+ import java .io .File ;
17+ import java .io .FileNotFoundException ;
18+ import java .util .List ;
519import java .util .Map ;
620
21+ import static com .backbase .oss .codegen .java .BoatJavaCodeGen .*;
722import static java .util .stream .Collectors .groupingBy ;
823import static org .hamcrest .MatcherAssert .assertThat ;
9- import static org .hamcrest .Matchers .hasEntry ;
10- import static org .hamcrest .Matchers .is ;
11- import static org .hamcrest .Matchers .nullValue ;
24+ import static org .hamcrest .Matchers .*;
1225import static org .junit .jupiter .api .Assertions .assertEquals ;
13- import static org .junit .jupiter .api .Assertions .assertTrue ;
14-
15- import org .junit .jupiter .api .Disabled ;
16- import org .junit .jupiter .api .Test ;
17- import org .openapitools .codegen .CliOption ;
18- import org .openapitools .codegen .CodegenModel ;
19- import org .openapitools .codegen .CodegenParameter ;
20- import org .openapitools .codegen .CodegenProperty ;
2126
2227class BoatJavaCodeGenTests {
2328
29+ static final String PROP_BASE = BoatJavaCodeGenTests .class .getSimpleName () + "." ;
30+ static final String TEST_OUTPUT = System .getProperty (PROP_BASE + "output" , "target/boat-java-codegen-tests" );
2431 @ Test
2532 void clientOptsUnicity () {
2633 final BoatJavaCodeGen gen = new BoatJavaCodeGen ();
@@ -43,6 +50,7 @@ void processOptsWithRestTemplateDefaults() {
4350 assertThat (gen .useJacksonConversion , is (false ));
4451 assertThat (gen .useDefaultApiClient , is (true ));
4552 assertThat (gen .restTemplateBeanName , is (nullValue ()));
53+ assertThat (gen .createApiComponent , is (true ));
4654 }
4755
4856 @ Test
@@ -57,6 +65,7 @@ void processOptsWithRestTemplate() {
5765 options .put (USE_JACKSON_CONVERSION , "true" );
5866 options .put (USE_DEFAULT_API_CLIENT , "false" );
5967 options .put (REST_TEMPLATE_BEAN_NAME , "the-coolest-rest-template-in-this-universe" );
68+ options .put (CREATE_API_COMPONENT , "false" );
6069
6170 gen .processOpts ();
6271
@@ -66,6 +75,7 @@ void processOptsWithRestTemplate() {
6675 assertThat (gen .useJacksonConversion , is (true ));
6776 assertThat (gen .useDefaultApiClient , is (false ));
6877 assertThat (gen .restTemplateBeanName , is ("the-coolest-rest-template-in-this-universe" ));
78+ assertThat (gen .createApiComponent , is (false ));
6979 }
7080
7181 @ Test
@@ -91,28 +101,54 @@ void processOptsWithoutRestTemplate() {
91101 }
92102
93103 @ Test
94- void processOptsCreateApiComponent () {
104+ void processOptsUseProtectedFields () {
95105 final BoatJavaCodeGen gen = new BoatJavaCodeGen ();
96106 final Map <String , Object > options = gen .additionalProperties ();
97107
98- options .put (CREATE_API_COMPONENT , "false " );
108+ options .put (USE_PROTECTED_FIELDS , "true " );
99109
100- gen .setLibrary ("resttemplate" );
101110 gen .processOpts ();
102111
103- assertThat (gen .createApiComponent , is ( false ));
112+ assertThat (gen .additionalProperties (), hasEntry ( "modelFieldsVisibility" , "protected" ));
104113 }
105114
106- @ Test
107- void processOptsUseProtectedFields () {
108- final BoatJavaCodeGen gen = new BoatJavaCodeGen ();
109- final Map <String , Object > options = gen .additionalProperties ();
115+ @ ParameterizedTest
116+ @ ValueSource (booleans = {true , false })
117+ void shouldHonourGenerateComponentAnnotation (boolean generate ) throws InterruptedException , FileNotFoundException {
110118
111- options .put (USE_PROTECTED_FIELDS , "true" );
119+ var input = new File ("src/test/resources/boat-spring/openapi.yaml" );
120+ var output = TEST_OUTPUT + "/shouldNotGenerateComponentAnnotation/" + String .valueOf (generate );
112121
113- gen .processOpts ();
122+ final BoatJavaCodeGen gen = new BoatJavaCodeGen ();
123+ gen .setOutputDir (output );
124+ gen .setInputSpec (input .getAbsolutePath ());
125+ gen .setApiPackage ("com.backbase.test.api" );
126+ gen .setModelPackage ("com.backbase.test.api.model" );
127+ gen .setInvokerPackage ("com.backbase.test.api.invoker" );
128+ gen .setApiNameSuffix ("ApiClient" );
114129
115- assertThat (gen .additionalProperties (), hasEntry ("modelFieldsVisibility" , "protected" ));
130+ final Map <String , Object > options = gen .additionalProperties ();
131+ options .put ("library" , "resttemplate" );
132+ options .put (CREATE_API_COMPONENT , String .valueOf (generate ));
133+
134+ var openApiInput = new OpenAPIParser ()
135+ .readLocation (input .getAbsolutePath (), null , new ParseOptions ())
136+ .getOpenAPI ();
137+ var clientOptInput = new ClientOptInput ();
138+ clientOptInput .config (gen );
139+ clientOptInput .openAPI (openApiInput );
140+
141+ List <File > files = new DefaultGenerator ().opts (clientOptInput ).generate ();
142+
143+ File apiFile = files .stream ()
144+ .filter (file -> file .getName ().equals ("PaymentsApiClient.java" ))
145+ .findFirst ()
146+ .get ();
147+ TypeDeclaration apiType = StaticJavaParser .parse (apiFile )
148+ .findFirst (TypeDeclaration .class ).get ();
149+
150+ assertThat (gen .createApiComponent , is (generate ));
151+ assertThat (gen .getLibrary (), is ("resttemplate" ));
152+ assertThat (apiType .getAnnotationByName ("Component" ).isPresent (), is (generate ));
116153 }
117-
118154}
0 commit comments