diff --git a/ConsumePlugin/RestApiExample.fs b/ConsumePlugin/RestApiExample.fs index 7fdc677..a69638e 100644 --- a/ConsumePlugin/RestApiExample.fs +++ b/ConsumePlugin/RestApiExample.fs @@ -54,6 +54,12 @@ type IPureGymApi = [] abstract GetResponseMessage''' : ?ct : CancellationToken -> Task + [] + abstract GetResponse : ?ct : CancellationToken -> Task> + + [] + abstract GetResponse' : ?ct : CancellationToken -> Task> + [] [] abstract GetWithAnyReturnCode : ?ct : CancellationToken -> Task diff --git a/MyriadPlugin.Test/TestReturnTypes.fs b/MyriadPlugin.Test/TestReturnTypes.fs index 91e7792..d168f6c 100644 --- a/MyriadPlugin.Test/TestReturnTypes.fs +++ b/MyriadPlugin.Test/TestReturnTypes.fs @@ -86,3 +86,32 @@ module TestReturnTypes = | _ -> failwith $"unrecognised case: %s{case}" Object.ReferenceEquals (message, Option.get responseMessage) |> shouldEqual true + + [] + [] + let ``Response return`` (case : string) = + for json, memberDto in PureGymDtos.memberActivityDtoCases do + let mutable responseMessage = None + + let proc (message : HttpRequestMessage) : HttpResponseMessage Async = + async { + message.Method |> shouldEqual HttpMethod.Get + let content = new StringContent (json) + let resp = new HttpResponseMessage (HttpStatusCode.OK) + resp.Content <- content + responseMessage <- Some resp + return resp + } + + use client = HttpClientMock.make (Uri "https://example.com") proc + let api = PureGymApi.make client + + let response = + match case with + | "Response" -> api.GetResponse().Result + | "RestEase.Response'" -> api.GetResponse'().Result + | _ -> failwith $"unrecognised case: %s{case}" + + response.ResponseMessage |> shouldEqual (Option.get responseMessage) + response.StringContent |> shouldEqual json + response.GetContent () |> shouldEqual memberDto