1212import java .io .File ;
1313import java .io .IOException ;
1414import java .util .Collections ;
15+ import java .util .HashSet ;
1516import java .util .Objects ;
17+ import java .util .Set ;
1618
1719import static com .kobylynskyi .graphql .codegen .TestUtils .assertSameTrimmedContent ;
1820import static com .kobylynskyi .graphql .codegen .TestUtils .getFileByName ;
21+ import static java .util .Collections .singleton ;
1922import static java .util .Collections .singletonList ;
2023import static org .hamcrest .MatcherAssert .assertThat ;
2124
@@ -188,6 +191,51 @@ void generate_CustomFieldsResolvers() throws Exception {
188191 getFileByName (files , "AcceptTopicSuggestionPayloadResolver.kt" ));
189192 }
190193
194+ @ Test
195+ void generate_CustomFieldsResolversWithAnnotation () throws Exception {
196+ mappingConfig .setModelNamePrefix ("Github" );
197+ mappingConfig .setModelNameSuffix ("TO" );
198+ mappingConfig .setApiNameSuffix ("WithAnnotation" );
199+ mappingConfig .setResolverArgumentAnnotations (singleton ("some.Annotation" ));
200+ mappingConfig .setGenerateDataFetchingEnvironmentArgumentInApis (true );
201+ mappingConfig .setFieldsWithResolvers (Collections .singleton ("AcceptTopicSuggestionPayload.topic" ));
202+
203+ new KotlinGraphQLCodegen (singletonList ("src/test/resources/schemas/github.graphqls" ),
204+ outputBuildDir , mappingConfig , TestUtils .getStaticGeneratedInfo ()).generate ();
205+
206+ File [] files = Objects .requireNonNull (outputktClassesDir .listFiles ());
207+
208+ assertSameTrimmedContent (new File (
209+ "src/test/resources/expected-classes/kt/field-resolver/" +
210+ "AcceptTopicSuggestionMutationWithAnnotation.kt.txt" ),
211+ getFileByName (files , "AcceptTopicSuggestionMutationWithAnnotation.kt" ));
212+ }
213+
214+ @ Test
215+ void generate_CustomFieldsResolversWithMultipleAnnotations () throws Exception {
216+
217+ Set <String > annotations = new HashSet <>();
218+ annotations .add ("some.Annotation" );
219+ annotations .add ("another.Annotation" );
220+
221+ mappingConfig .setModelNamePrefix ("Github" );
222+ mappingConfig .setModelNameSuffix ("TO" );
223+ mappingConfig .setApiNameSuffix ("WithAnnotations" );
224+ mappingConfig .setResolverArgumentAnnotations (annotations );
225+ mappingConfig .setGenerateDataFetchingEnvironmentArgumentInApis (true );
226+ mappingConfig .setFieldsWithResolvers (Collections .singleton ("AcceptTopicSuggestionPayload.topic" ));
227+
228+ new KotlinGraphQLCodegen (singletonList ("src/test/resources/schemas/github.graphqls" ),
229+ outputBuildDir , mappingConfig , TestUtils .getStaticGeneratedInfo ()).generate ();
230+
231+ File [] files = Objects .requireNonNull (outputktClassesDir .listFiles ());
232+
233+ assertSameTrimmedContent (new File (
234+ "src/test/resources/expected-classes/kt/field-resolver/" +
235+ "AcceptTopicSuggestionMutationWithAnnotations.kt.txt" ),
236+ getFileByName (files , "AcceptTopicSuggestionMutationWithAnnotations.kt" ));
237+ }
238+
191239 @ Test
192240 void generate_RequestWithDefaultValue () throws Exception {
193241 mappingConfig .setGenerateBuilder (true );
@@ -200,4 +248,4 @@ void generate_RequestWithDefaultValue() throws Exception {
200248 getFileByName (files , "FriendsQueryRequest.kt" ));
201249 }
202250
203- }
251+ }
0 commit comments