Skip to content

Commit 8f89e63

Browse files
committed
Applied suggestions by @Thorium
1 parent 4b73731 commit 8f89e63

File tree

5 files changed

+27
-28
lines changed

5 files changed

+27
-28
lines changed

samples/star-wars-api/Policies.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Policies =
77

88
let [<Literal>] CanSetMoon = "CanSetMoon"
99

10-
type IsCharacterRequierment (character : string list) =
10+
type IsCharacterRequierment (character : string Set) =
1111
member val Characters = character
1212
interface IAuthorizationRequirement
1313

@@ -16,11 +16,11 @@ type IsCharacterHandler () =
1616
inherit AuthorizationHandler<IsCharacterRequierment> () // Inject services from DI
1717

1818
override _.HandleRequirementAsync (context, requirement) =
19-
Async.StartAsTask(async {
19+
Async.StartImmediateAsTask(async {
2020
let allowedCharacters = requirement.Characters
2121
if context.User.Claims
2222
|> Seq.where (fun c -> c.Type = "character")
23-
|> Seq.exists (fun c -> allowedCharacters |> List.contains c.Value)
23+
|> Seq.exists (fun c -> allowedCharacters |> Set.contains c.Value)
2424
then context.Succeed requirement
2525
else () // Go to the next handler if registered
2626
}) :> _

samples/star-wars-api/Startup.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type Startup private () =
3333
.AddAuthorization(fun options ->
3434
options.AddPolicy (
3535
Policies.CanSetMoon,
36-
(fun policy -> policy.Requirements.Add (IsCharacterRequierment (List.singleton "droid"))))
36+
(fun policy -> policy.Requirements.Add (IsCharacterRequierment (Set.singleton "droid"))))
3737
)
3838
.AddScoped<IAuthorizationHandler, IsCharacterHandler>()
3939
.AddOxpecker()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ type GraphQLRequestHandler<'Root> (
232232
let root = options.CurrentValue.RootFactory ctx
233233

234234
let! result =
235-
Async.StartAsTask(
235+
Async.StartImmediateAsTask(
236236
executor.AsyncExecute(content.Ast, root, ?variables = variables, ?operationName = operationName),
237237
cancellationToken = ctx.RequestAborted
238238
)

src/FSharp.Data.GraphQL.Shared/AsyncVal.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ module AsyncVal =
6262
let toTask (x : AsyncVal<'T>) =
6363
match x with
6464
| Value v -> Task.FromResult (v)
65-
| Async a -> Async.StartAsTask (a)
65+
| Async a -> Async.StartImmediateAsTask (a)
6666
| Failure f -> Task.FromException<'T> (f)
6767

6868
/// Returns an empty AsyncVal with immediatelly executed value.

tests/FSharp.Data.GraphQL.Tests/Helpers.fs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,21 @@ let single (xs : 'a seq) =
3838
then fail <| sprintf "Expected single item in sequence, but found %i items.\n%A" length xs
3939
Seq.head xs
4040
let throws<'e when 'e :> exn> (action : unit -> unit) = Assert.Throws<'e>(action)
41-
let throwsAsync<'e when 'e :> exn> (action : unit Async) = Assert.ThrowsAsync<'e>(fun () -> Async.StartAsTask(action))
42-
let throwsAsyncVal<'e when 'e :> exn> (action : unit AsyncVal) = Assert.ThrowsAsync<'e>(fun () -> Async.StartAsTask(action |> AsyncVal.toAsync))
41+
let throwsAsync<'e when 'e :> exn> (action : unit Async) = Assert.ThrowsAsync<'e>(fun () -> Async.StartImmediateAsTask action)
42+
let throwsAsyncVal<'e when 'e :> exn> (action : unit AsyncVal) = Assert.ThrowsAsync<'e>(fun () -> Async.StartImmediateAsTask (action |> AsyncVal.toAsync))
4343
let sync = Async.RunSynchronously
4444
let is<'t> (o: obj) = o :? 't
4545

46-
let hasError (errMsg : string) (errors: GQLProblemDetails seq) =
46+
let hasError (errMsg : string) (errors : GQLProblemDetails seq) =
4747
let containsMessage = errors |> Seq.exists (fun pd -> pd.Message.Contains(errMsg))
4848
Assert.True (containsMessage, sprintf "Expected to contain message '%s', but no such message was found. Messages found: %A" errMsg errors)
4949

5050
let hasErrorAtPath path (errMsg : string) (errors: GQLProblemDetails seq) =
51-
match errors |> Seq.where (fun pd -> pd.Message.Contains(errMsg)) |> Seq.tryHead with
51+
match errors |> Seq.where (fun pd -> pd.Message.Contains errMsg) |> Seq.tryHead with
5252
| Some error ->
5353
error.Path
54-
|> Skippable.filter (fun pathValue -> Assert.True((pathValue = path), $"Expected that message '%s{errMsg}' has path {path}, but path {pathValue} found."); true)
55-
|> Skippable.defaultWith (fun () -> Assert.Fail($"Expected that message '%s{errMsg}' has path {path}, but no path found."); []) |> ignore
54+
|> Skippable.filter (fun pathValue -> Assert.True ((pathValue = path), $"Expected that message '%s{errMsg}' has path {path}, but path {pathValue} found."); true)
55+
|> Skippable.defaultWith (fun () -> Assert.Fail ($"Expected that message '%s{errMsg}' has path {path}, but no path found."); []) |> ignore
5656
| None ->
5757
Assert.Fail ($"Expected to contain message '%s{errMsg}', but no such message was found. Messages found: %A{errors}")
5858

@@ -73,7 +73,7 @@ let seqEquals (expected : 'a seq) (actual : 'a seq) =
7373
Assert.Equal<'a>(expected, actual)
7474

7575
let greaterThanOrEqual expected actual =
76-
Assert.True(actual >= expected, sprintf "Expected value to be greather than or equal to %A, but was: %A" expected actual)
76+
Assert.True (actual >= expected, sprintf "Expected value to be greather than or equal to %A, but was: %A" expected actual)
7777

7878
open System.Text.Json
7979
open FSharp.Data.GraphQL.Types
@@ -102,15 +102,15 @@ let waitEvent (mre : ManualResetEvent) errorMsg =
102102
then fail errorMsg
103103

104104
let rec waitFor (condition : unit -> bool) (times : int) errorMsg =
105-
Thread.Sleep(100) // Wait a bit before checking condition
105+
Thread.Sleep 100 // Wait a bit before checking condition
106106
if not (condition ())
107107
then
108108
if times = 0
109109
then fail errorMsg
110110
else waitFor condition (times - 1) errorMsg
111111

112112
let rec ensureThat (condition : unit -> bool) (times : int) errorMsg =
113-
Thread.Sleep(100) // Wait a bit before checking condition
113+
Thread.Sleep 100 // Wait a bit before checking condition
114114
if not (condition ())
115115
then fail errorMsg
116116
elif times > 0
@@ -130,35 +130,34 @@ type TestObserver<'T>(obs : IObservable<'T>, ?onReceived : TestObserver<'T> -> '
130130
let mre = new ManualResetEvent(false)
131131
let mutable subscription = Unchecked.defaultof<IDisposable>
132132
do subscription <- obs.Subscribe(this)
133-
member _.Received
134-
with get() = received.AsEnumerable()
135-
member _.WaitCompleted(?expectedItemCount, ?timeout) =
133+
member _.Received = received.AsEnumerable()
134+
member _.WaitCompleted (?expectedItemCount, ?timeout) =
136135
let ms = defaultArg timeout 30
137-
if TimeSpan.FromSeconds(float ms) |> mre.WaitOne |> not
136+
if TimeSpan.FromSeconds (float ms) |> mre.WaitOne |> not
138137
then fail "Timeout waiting for OnCompleted"
139138
match expectedItemCount with
140139
| Some x ->
141140
if received.Count < x
142141
then failwithf "Expected to receive %i items, but received %i\nItems: %A" x received.Count received
143142
| None -> ()
144-
member _.WaitForItems(expectedItemCount) =
143+
member _.WaitForItems (expectedItemCount) =
145144
let errorMsg = sprintf "Expected to receive least %i items, but received %i\nItems: %A" expectedItemCount received.Count received
146145
waitFor (fun () -> received.Count = expectedItemCount) (expectedItemCount * 100) errorMsg
147-
member x.WaitForItem() = x.WaitForItems(1)
146+
member x.WaitForItem () = x.WaitForItems(1)
148147
member _.IsCompleted
149148
with get() = isCompleted
150149
interface IObserver<'T> with
151-
member _.OnCompleted() =
150+
member _.OnCompleted () =
152151
isCompleted <- true
153152
mre.Set() |> ignore
154-
member _.OnError(error) = error.Reraise()
155-
member _.OnNext(value) =
156-
received.Add(value)
153+
member _.OnError (error) = error.Reraise()
154+
member _.OnNext (value) =
155+
received.Add (value)
157156
onReceived |> Option.iter (fun evt -> evt this value)
158157
interface IDisposable with
159-
member _.Dispose() =
160-
subscription.Dispose()
161-
mre.Dispose()
158+
member _.Dispose () =
159+
subscription.Dispose ()
160+
mre.Dispose ()
162161

163162
[<RequireQualifiedAccess>]
164163
module Observer =

0 commit comments

Comments
 (0)