11package io .swagger .codegen .languages ;
22
3+ import static io .swagger .codegen .languages .JavaClientCodegen .RETROFIT_2 ;
4+
5+ import java .util .ArrayList ;
36import java .util .Arrays ;
47import java .util .Collections ;
58import java .util .HashMap ;
912import org .testng .Assert ;
1013import org .testng .annotations .Test ;
1114
15+ import com .google .common .collect .ImmutableMap ;
16+
17+ import io .swagger .codegen .CodegenOperation ;
18+ import io .swagger .codegen .CodegenParameter ;
19+
1220public class JavaClientCodegenTest {
1321
1422 private static final String VENDOR_MIME_TYPE = "application/vnd.company.v1+json" ;
@@ -51,15 +59,15 @@ public void testContentTypePrioritization() {
5159 Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (jsonMimeType )), Arrays .asList (jsonMimeType ));
5260 Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (vendorMimeType )), Arrays .asList (vendorMimeType ));
5361
54- Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (xmlMimeType , jsonMimeType )),
62+ Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (xmlMimeType , jsonMimeType )),
5563 Arrays .asList (jsonMimeType , xmlMimeType ));
56- Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (jsonMimeType , xmlMimeType )),
64+ Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (jsonMimeType , xmlMimeType )),
5765 Arrays .asList (jsonMimeType , xmlMimeType ));
58- Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (jsonMimeType , vendorMimeType )),
66+ Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (jsonMimeType , vendorMimeType )),
5967 Arrays .asList (vendorMimeType , jsonMimeType ));
60- Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (textMimeType , xmlMimeType )),
68+ Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (textMimeType , xmlMimeType )),
6169 Arrays .asList (textMimeType , xmlMimeType ));
62- Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (xmlMimeType , textMimeType )),
70+ Assert .assertEquals (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (xmlMimeType , textMimeType )),
6371 Arrays .asList (xmlMimeType , textMimeType ));
6472
6573 System .out .println (JavaClientCodegen .prioritizeContentTypes (Arrays .asList (
@@ -74,4 +82,53 @@ public void testContentTypePrioritization() {
7482
7583 Assert .assertNull (priContentTypes .get (3 ).get ("hasMore" ));
7684 }
85+
86+ @ Test
87+ public void testParametersAreCorrectlyOrderedWhenUsingRetrofit (){
88+ JavaClientCodegen javaClientCodegen = new JavaClientCodegen ();
89+ javaClientCodegen .setLibrary (RETROFIT_2 );
90+
91+ CodegenOperation codegenOperation = new CodegenOperation ();
92+ CodegenParameter queryParamRequired = createQueryParam ("queryParam1" , true );
93+ CodegenParameter queryParamOptional = createQueryParam ("queryParam2" , false );
94+ CodegenParameter pathParam1 = createPathParam ("pathParam1" );
95+ CodegenParameter pathParam2 = createPathParam ("pathParam2" );
96+
97+ codegenOperation .allParams = Arrays .asList (queryParamRequired , pathParam1 , pathParam2 , queryParamOptional );
98+ Map <String , Object > operations = ImmutableMap .<String , Object >of ("operation" , Arrays .asList (codegenOperation ));
99+
100+ Map <String , Object > objs = ImmutableMap .of ("operations" , operations , "imports" , new ArrayList <Map <String , String >>());
101+
102+ javaClientCodegen .postProcessOperations (objs );
103+
104+ Assert .assertEquals (Arrays .asList (pathParam1 , pathParam2 , queryParamRequired , queryParamOptional ), codegenOperation .allParams );
105+ Assert .assertTrue (pathParam1 .hasMore );
106+ Assert .assertTrue (pathParam2 .hasMore );
107+ Assert .assertTrue (queryParamRequired .hasMore );
108+ Assert .assertFalse (queryParamOptional .hasMore );
109+
110+ }
111+
112+ private CodegenParameter createPathParam (String name ) {
113+ CodegenParameter codegenParameter = createStringParam (name );
114+ codegenParameter .isPathParam = true ;
115+ return codegenParameter ;
116+ }
117+
118+ private CodegenParameter createQueryParam (String name , boolean required ) {
119+ CodegenParameter codegenParameter = createStringParam (name );
120+ codegenParameter .isQueryParam = true ;
121+ codegenParameter .required = required ;
122+ return codegenParameter ;
123+ }
124+
125+ private CodegenParameter createStringParam (String name ){
126+ CodegenParameter codegenParameter = new CodegenParameter ();
127+ codegenParameter .paramName = name ;
128+ codegenParameter .baseName = name ;
129+ codegenParameter .dataType = "String" ;
130+ return codegenParameter ;
131+ }
132+
133+
77134}
0 commit comments