未验证 提交 9910eb80 编写于 作者: 梦境迷离's avatar 梦境迷离 提交者: GitHub
上级 66ca92c8
......@@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.Objects;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
......@@ -159,5 +160,22 @@ class GraphQLCodegenGitHubTest {
getFileByName(files, "Commit.kt"));
}
@Test
void generate_CustomFieldsResolvers() throws Exception {
mappingConfig.setModelNamePrefix("Github");
mappingConfig.setModelNameSuffix("TO");
mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true);
mappingConfig.setFieldsWithResolvers(Collections.singleton("AcceptTopicSuggestionPayload.topic"));
new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/github.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputktClassesDir.listFiles());
assertSameTrimmedContent(new File("src/test/resources/expected-classes/kt/field-resolver/GithubAcceptTopicSuggestionPayloadTO.kt.txt"),
getFileByName(files, "GithubAcceptTopicSuggestionPayloadTO.kt"));
assertSameTrimmedContent(new File("src/test/resources/expected-classes/kt/field-resolver/AcceptTopicSuggestionPayloadResolver.kt.txt"),
getFileByName(files, "AcceptTopicSuggestionPayloadResolver.kt"));
}
}
\ No newline at end of file
package com.kobylynskyi.graphql.codegen.kotlin;
import com.kobylynskyi.graphql.codegen.TestUtils;
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
import com.kobylynskyi.graphql.codegen.supplier.SchemaFinder;
import com.kobylynskyi.graphql.codegen.utils.Utils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
import static com.kobylynskyi.graphql.codegen.TestUtils.getFileByName;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toSet;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GraphQLCodegenRelayTest {
private final File outputBuildDir = new File("build/generated");
private final File outputJavaClassesDir = new File("build/generated");
private final MappingConfig mappingConfig = new MappingConfig();
private final SchemaFinder schemaFinder = new SchemaFinder(Paths.get("src/test/resources"));
@BeforeEach
void init() {
mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true);
mappingConfig.setGeneratedLanguage(GeneratedLanguage.KOTLIN);
schemaFinder.setIncludePattern("relay.graphqls");
}
@AfterEach
void cleanup() {
Utils.deleteDir(outputBuildDir);
}
@Test
void generateServerSideRelayClasses() throws Exception {
new KotlinGraphQLCodegen(schemaFinder.findSchemas(), outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
Set<String> generatedFileNames = Arrays.stream(files).map(File::getName).collect(toSet());
assertEquals(new HashSet<>(asList("Organization.kt", "User.kt", "OrganizationsQueryResolver.kt",
"QueryResolver.kt", "UsersQueryResolver.kt")), generatedFileNames);
for (File file : files) {
assertSameTrimmedContent(
new File(String.format("src/test/resources/expected-classes/kt/relay/%s.txt", file.getName())),
file);
}
}
@Test
void generateServerSideRelayClasses_CustomGenericsConnectionType() throws Exception {
mappingConfig.getRelayConfig()
.setConnectionType("reactor.core.publisher.Mono<graphql.relay.Connection<%s>>");
new KotlinGraphQLCodegen(schemaFinder.findSchemas(), outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
assertSameTrimmedContent(new File("src/test/resources/expected-classes/kt/relay/UsersQueryResolver_reactive.kt.txt"),
getFileByName(files, "UsersQueryResolver.kt"));
}
}
\ No newline at end of file
package com.kobylynskyi.graphql.codegen.scala;
import com.kobylynskyi.graphql.codegen.TestUtils;
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
import com.kobylynskyi.graphql.codegen.supplier.SchemaFinder;
import com.kobylynskyi.graphql.codegen.utils.Utils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
import static com.kobylynskyi.graphql.codegen.TestUtils.getFileByName;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toSet;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GraphQLCodegenRelayTest {
private final File outputBuildDir = new File("build/generated");
private final File outputJavaClassesDir = new File("build/generated");
private final MappingConfig mappingConfig = new MappingConfig();
private final SchemaFinder schemaFinder = new SchemaFinder(Paths.get("src/test/resources"));
@BeforeEach
void init() {
mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true);
mappingConfig.setGeneratedLanguage(GeneratedLanguage.SCALA);
schemaFinder.setIncludePattern("relay.graphqls");
}
@AfterEach
void cleanup() {
Utils.deleteDir(outputBuildDir);
}
@Test
void generateServerSideRelayClasses() throws Exception {
new ScalaGraphQLCodegen(schemaFinder.findSchemas(), outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
Set<String> generatedFileNames = Arrays.stream(files).map(File::getName).collect(toSet());
assertEquals(new HashSet<>(asList("Organization.scala", "User.scala", "OrganizationsQueryResolver.scala",
"QueryResolver.scala", "UsersQueryResolver.scala")), generatedFileNames);
for (File file : files) {
assertSameTrimmedContent(
new File(String.format("src/test/resources/expected-classes/scala/relay/%s.txt", file.getName())),
file);
}
}
@Test
void generateServerSideRelayClasses_CustomGenericsConnectionType() throws Exception {
mappingConfig.getRelayConfig()
.setConnectionType("reactor.core.publisher.Mono[graphql.relay.Connection[%s]]");
new ScalaGraphQLCodegen(schemaFinder.findSchemas(), outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
assertSameTrimmedContent(new File("src/test/resources/expected-classes/scala/relay/UsersQueryResolver_reactive.scala.txt"),
getFileByName(files, "UsersQueryResolver.scala"));
}
}
\ No newline at end of file
package com.github.graphql
/**
* Resolver for AcceptTopicSuggestionPayload
*/
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface AcceptTopicSuggestionPayloadResolver {
@Throws(Exception::class)
fun topic(githubAcceptTopicSuggestionPayloadTO: GithubAcceptTopicSuggestionPayloadTO, env: graphql.schema.DataFetchingEnvironment): GithubTopicTO?
}
\ No newline at end of file
package com.github.graphql
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer
import java.util.StringJoiner
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
data class GithubAcceptTopicSuggestionPayloadTO(
val clientMutationId: String?
) {
// In the future, it maybe change.
override fun toString(): String {
val joiner = StringJoiner(", ", "{ ", " }")
if (clientMutationId != null) {
joiner.add("clientMutationId: " + GraphQLRequestSerializer.getEntry(clientMutationId))
}
return joiner.toString()
}
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
data class Organization(
val id: String
) {
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface OrganizationsQueryResolver {
@Throws(Exception::class)
fun organizations(first: Int?, after: String?, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection<Organization>
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface QueryResolver {
@Throws(Exception::class)
fun users(first: Int, after: String?, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection<User>
@Throws(Exception::class)
fun organizations(first: Int?, after: String?, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection<Organization>
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
data class User(
val id: String,
val name: String?
) {
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface UsersQueryResolver {
@Throws(Exception::class)
fun users(first: Int, after: String?, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection<User>
}
\ No newline at end of file
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface UsersQueryResolver {
@Throws(Exception::class)
fun users(first: Int, after: String?, env: graphql.schema.DataFetchingEnvironment): reactor.core.publisher.Mono<graphql.relay.Connection<User>>
}
\ No newline at end of file
import scala.collection.JavaConverters._
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
case class Organization(
@javax.validation.constraints.NotNull
id: String
) {
}
\ No newline at end of file
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
trait OrganizationsQueryResolver {
@throws[Exception]
def organizations(first: Option[Int], after: String, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection[Organization]
}
\ No newline at end of file
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
trait QueryResolver {
@throws[Exception]
def users(first: Int, after: String, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection[User]
@throws[Exception]
def organizations(first: Option[Int], after: String, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection[Organization]
}
\ No newline at end of file
import scala.collection.JavaConverters._
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
case class User(
@javax.validation.constraints.NotNull
id: String,
name: String
) {
}
\ No newline at end of file
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
trait UsersQueryResolver {
@throws[Exception]
def users(first: Int, after: String, env: graphql.schema.DataFetchingEnvironment): graphql.relay.Connection[User]
}
\ No newline at end of file
@javax.annotation.Generated(
value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"),
date = "2020-12-31T23:59:59-0500"
)
trait UsersQueryResolver {
@throws[Exception]
def users(first: Int, after: String, env: graphql.schema.DataFetchingEnvironment): reactor.core.publisher.Mono[graphql.relay.Connection[User]]
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册