-
-
Notifications
You must be signed in to change notification settings - Fork 468
Expand file tree
/
Copy pathGraphqlTestClient.kt
More file actions
38 lines (30 loc) · 1.39 KB
/
GraphqlTestClient.kt
File metadata and controls
38 lines (30 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package io.sentry.systemtest.graphql
import com.apollographql.apollo.ApolloClient
import com.apollographql.apollo.api.ApolloResponse
import com.apollographql.apollo.api.Mutation
import com.apollographql.apollo.api.Query
import io.sentry.samples.graphql.AddProjectMutation
import io.sentry.samples.graphql.GreetingQuery
import io.sentry.samples.graphql.ProjectQuery
import io.sentry.samples.graphql.TasksAndAssigneesQuery
import kotlinx.coroutines.runBlocking
class GraphqlTestClient(backendUrl: String) {
val apollo =
ApolloClient.Builder()
.serverUrl("$backendUrl/graphql")
.addHttpHeader("Authorization", "Basic dXNlcjpwYXNzd29yZA==")
.build()
fun greet(name: String): ApolloResponse<GreetingQuery.Data>? = executeQuery(GreetingQuery(name))
fun project(slug: String): ApolloResponse<ProjectQuery.Data>? = executeQuery(ProjectQuery(slug))
fun tasksAndAssignees(slug: String): ApolloResponse<TasksAndAssigneesQuery.Data>? =
executeQuery(TasksAndAssigneesQuery(slug))
fun addProject(slug: String): ApolloResponse<AddProjectMutation.Data>? =
executeMutation(AddProjectMutation(slug))
private fun <T : Query.Data> executeQuery(query: Query<T>): ApolloResponse<T>? = runBlocking {
apollo.query(query).execute()
}
private fun <T : Mutation.Data> executeMutation(mutation: Mutation<T>): ApolloResponse<T>? =
runBlocking {
apollo.mutation(mutation).execute()
}
}