Skip to content

Commit 1035ba6

Browse files
committed
Fixed AddGraphQL overloads resolution
1 parent d559811 commit 1035ba6

3 files changed

Lines changed: 68 additions & 3 deletions

File tree

src/FSharp.Data.GraphQL.Server.AspNetCore/ServiceCollectionExtensions.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ module ServiceCollectionExtensions =
257257
member services.AddGraphQL<'Root, 'Handler when 'Handler :> GraphQLRequestHandler<'Root> and 'Handler : not struct>
258258
(
259259
rootFactory : HttpContext -> 'Root,
260-
[<Optional; DefaultParameterValue (GraphQLOptionsDefaults.WebSocketEndpoint)>] webSocketEndpointPath : string,
260+
webSocketEndpointPath : string,
261261
[<Optional>] additionalConverters : JsonConverter seq
262262
) =
263263
let getExecutorService (sp : IServiceProvider) = sp.GetRequiredService<Executor<'Root>>()
@@ -277,7 +277,7 @@ module ServiceCollectionExtensions =
277277
member services.AddGraphQL<'Root>
278278
(
279279
rootFactory : HttpContext -> 'Root,
280-
[<Optional; DefaultParameterValue (GraphQLOptionsDefaults.WebSocketEndpoint)>] webSocketEndpointPath : string,
280+
webSocketEndpointPath : string,
281281
[<Optional>] additionalConverters : JsonConverter seq
282282
) =
283283
let getExecutorService (sp : IServiceProvider) = sp.GetRequiredService<Executor<'Root>>()
@@ -301,7 +301,7 @@ module ServiceCollectionExtensions =
301301
[<Optional>] additionalConverters : JsonConverter seq
302302
) =
303303
let getExecutorService (sp : IServiceProvider) = sp.GetRequiredService<Executor<'Root>>()
304-
services.AddGraphQL<'Root, 'Handler> (getExecutorService, rootFactory, additionalConverters, configure = null)
304+
services.AddGraphQL<'Root, 'Handler> (getExecutorService, rootFactory, additionalConverters, configure = configure)
305305

306306
/// <summary>
307307
/// Adds GraphQL options and services to the service collection. It gets the executor from the service provider.

tests/FSharp.Data.GraphQL.IntegrationTests.Server/FSharp.Data.GraphQL.IntegrationTests.Server.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<ItemGroup>
1616
<None Include="ApplicationInsights.config" />
1717
<Compile Include="Schema.fs" />
18+
<Compile Include="ServiceCollectionExtensionsCompilationTests.fs" />
1819
<Compile Include="Startup.fs" />
1920
<Compile Include="Program.fs" />
2021
</ItemGroup>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/// Compilation-only tests that verify all public AddGraphQL overloads resolve correctly.
2+
/// These functions are never called at runtime.
3+
module FSharp.Data.GraphQL.IntegrationTests.Server.ServiceCollectionExtensionsCompilationTests
4+
5+
open System
6+
open Microsoft.AspNetCore.Http
7+
open Microsoft.Extensions.DependencyInjection
8+
9+
open FSharp.Data.GraphQL.Server.AspNetCore
10+
open FSharp.Data.GraphQL.Samples.StarWarsApi
11+
12+
let private rootFactory (ctx : HttpContext) : Root = Root(ctx)
13+
14+
let private probe_ExecutorInstance_Handler_NoOptionals () =
15+
let services = ServiceCollection() :> IServiceCollection
16+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(Schema.executor, rootFactory) |> ignore
17+
18+
let private probe_ExecutorInstance_Handler_WithWsPath () =
19+
let services = ServiceCollection() :> IServiceCollection
20+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(Schema.executor, rootFactory, "/ws") |> ignore
21+
22+
let private probe_ExecutorInstance_Handler_WithConfigure () =
23+
let services = ServiceCollection() :> IServiceCollection
24+
let configure = Func<GraphQLOptions<Root>, GraphQLOptions<Root>>(id)
25+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(Schema.executor, rootFactory, configure) |> ignore
26+
27+
let private probe_ExecutorInstance_NoHandler_NoOptionals () =
28+
let services = ServiceCollection() :> IServiceCollection
29+
services.AddGraphQL<Root>(Schema.executor, rootFactory) |> ignore
30+
31+
let private probe_ExecutorInstance_NoHandler_WithWsPath () =
32+
let services = ServiceCollection() :> IServiceCollection
33+
services.AddGraphQL<Root>(Schema.executor, rootFactory, "/ws") |> ignore
34+
35+
let private probe_ExecutorInstance_NoHandler_WithConfigure () =
36+
let services = ServiceCollection() :> IServiceCollection
37+
let configure = Func<GraphQLOptions<Root>, GraphQLOptions<Root>>(id)
38+
services.AddGraphQL<Root>(Schema.executor, rootFactory, configure) |> ignore
39+
40+
let private probe_FromDI_Handler_WithWsPath () =
41+
let services = ServiceCollection() :> IServiceCollection
42+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(rootFactory, "/ws") |> ignore
43+
44+
let private probe_FromDI_Handler_NoOptionals () =
45+
let services = ServiceCollection() :> IServiceCollection
46+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(rootFactory) |> ignore
47+
48+
let private probe_FromDI_Handler_WithConfigure () =
49+
let services = ServiceCollection() :> IServiceCollection
50+
let configure = Func<GraphQLOptions<Root>, GraphQLOptions<Root>>(id)
51+
services.AddGraphQL<Root, DefaultGraphQLRequestHandler<Root>>(rootFactory, configure) |> ignore
52+
53+
let private probe_FromDI_NoHandler_WithWsPath () =
54+
let services = ServiceCollection() :> IServiceCollection
55+
services.AddGraphQL<Root>(rootFactory, "/ws") |> ignore
56+
57+
let private probe_FromDI_NoHandler_NoOptionals () =
58+
let services = ServiceCollection() :> IServiceCollection
59+
services.AddGraphQL<Root>(rootFactory) |> ignore
60+
61+
let private probe_FromDI_NoHandler_WithConfigure () =
62+
let services = ServiceCollection() :> IServiceCollection
63+
let configure = Func<GraphQLOptions<Root>, GraphQLOptions<Root>>(id)
64+
services.AddGraphQL<Root>(rootFactory, configure) |> ignore

0 commit comments

Comments
 (0)