|
1 | 1 | package graphql.kickstart.tools |
2 | 2 |
|
3 | 3 | import graphql.ExecutionResult |
| 4 | +import graphql.GraphQLContext |
4 | 5 | import graphql.execution.* |
5 | 6 | import graphql.execution.instrumentation.SimpleInstrumentation |
6 | 7 | import graphql.kickstart.tools.resolver.FieldResolverError |
@@ -79,8 +80,8 @@ class MethodFieldResolverDataFetcherTest { |
79 | 80 | val channel = Channel<String>(10) |
80 | 81 |
|
81 | 82 | init { |
82 | | - channel.offer("A") |
83 | | - channel.offer("B") |
| 83 | + channel.trySend("A") |
| 84 | + channel.trySend("B") |
84 | 85 | } |
85 | 86 |
|
86 | 87 | @Suppress("UNUSED_PARAMETER") |
@@ -176,21 +177,34 @@ class MethodFieldResolverDataFetcherTest { |
176 | 177 |
|
177 | 178 | @Test |
178 | 179 | fun `data fetcher passes environment if method has extra argument even if context is specified`() { |
179 | | - val options = SchemaParserOptions.newOptions().contextClass(ContextClass::class).build() |
180 | | - val resolver = createFetcher("active", options = options, resolver = object : GraphQLResolver<DataClass> { |
| 180 | + val context = GraphQLContext.newContext().build() |
| 181 | + val resolver = createFetcher("active", resolver = object : GraphQLResolver<DataClass> { |
181 | 182 | fun isActive(dataClass: DataClass, env: DataFetchingEnvironment): Boolean = env is DataFetchingEnvironment |
182 | 183 | }) |
183 | 184 |
|
184 | | - assertEquals(resolver.get(createEnvironment(DataClass(), context = ContextClass())), true) |
| 185 | + assertEquals(resolver.get(createEnvironment(DataClass(), context = context)), true) |
185 | 186 | } |
186 | 187 |
|
187 | 188 | @Test |
188 | 189 | fun `data fetcher passes context if method has extra argument and context is specified`() { |
189 | | - val context = ContextClass() |
| 190 | + val context = GraphQLContext.newContext().build() |
| 191 | + val resolver = createFetcher("active", resolver = object : GraphQLResolver<DataClass> { |
| 192 | + fun isActive(dataClass: DataClass, ctx: GraphQLContext): Boolean { |
| 193 | + return ctx == context |
| 194 | + } |
| 195 | + }) |
| 196 | + |
| 197 | + assertEquals(resolver.get(createEnvironment(DataClass(), context = context)), true) |
| 198 | + } |
| 199 | + |
| 200 | + @Test |
| 201 | + fun `data fetcher passes custom context if method has extra argument and custom context is specified as part of GraphQLContext`() { |
| 202 | + val customContext = ContextClass() |
| 203 | + val context = GraphQLContext.of(mapOf(ContextClass::class.java to customContext)) |
190 | 204 | val options = SchemaParserOptions.newOptions().contextClass(ContextClass::class).build() |
191 | 205 | val resolver = createFetcher("active", options = options, resolver = object : GraphQLResolver<DataClass> { |
192 | 206 | fun isActive(dataClass: DataClass, ctx: ContextClass): Boolean { |
193 | | - return ctx == context |
| 207 | + return ctx == customContext |
194 | 208 | } |
195 | 209 | }) |
196 | 210 |
|
@@ -243,7 +257,7 @@ class MethodFieldResolverDataFetcherTest { |
243 | 257 | private val channel = Channel<String>(10) |
244 | 258 |
|
245 | 259 | init { |
246 | | - channel.offer("A") |
| 260 | + channel.trySend("A") |
247 | 261 | channel.close(IllegalStateException("Channel error")) |
248 | 262 | } |
249 | 263 |
|
@@ -281,11 +295,11 @@ class MethodFieldResolverDataFetcherTest { |
281 | 295 | return FieldResolverScanner(options).findFieldResolver(field, resolverInfo).createDataFetcher() |
282 | 296 | } |
283 | 297 |
|
284 | | - private fun createEnvironment(source: Any = Object(), arguments: Map<String, Any> = emptyMap(), context: Any? = null): DataFetchingEnvironment { |
| 298 | + private fun createEnvironment(source: Any = Object(), arguments: Map<String, Any> = emptyMap(), context: GraphQLContext? = null): DataFetchingEnvironment { |
285 | 299 | return DataFetchingEnvironmentImpl.newDataFetchingEnvironment(buildExecutionContext()) |
286 | 300 | .source(source) |
287 | 301 | .arguments(arguments) |
288 | | - .context(context) |
| 302 | + .graphQLContext(context) |
289 | 303 | .build() |
290 | 304 | } |
291 | 305 |
|
|
0 commit comments