Skip to content

Commit c00a9c3

Browse files
committed
Fixed AddGraphQL overloads resolution
1 parent d559811 commit c00a9c3

3 files changed

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

0 commit comments

Comments
 (0)