File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed
src/FsToolkit.ErrorHandling.TaskResult
tests/FsToolkit.ErrorHandling.TaskResult.Tests Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -250,3 +250,10 @@ module TaskResult =
250250 Result.requireNone error
251251 >> Task.singleton
252252 )
253+
254+ let inline foldResult
255+ ( [<InlineIfLambda>] onSuccess : 'input -> 'output )
256+ ( [<InlineIfLambda>] onError : 'inputError -> 'output )
257+ ( input : Task < Result < 'input , 'inputError >>)
258+ : Task < 'output > =
259+ Task.map ( Result.either onSuccess onError) input
Original file line number Diff line number Diff line change @@ -815,3 +815,27 @@ let TaskResultBindRequireTests =
815815 |> Expect.hasTaskOkValue " john_doe"
816816 }
817817 ]
818+
819+ [<Tests>]
820+ let foldResultTests =
821+ testList " TaskResult.foldResult tests" [
822+ testCaseTask " foldResult with Task(Ok x)"
823+ <| fun _ ->
824+ task {
825+ let! actual =
826+ createPostSuccess validCreatePostRequest
827+ |> TaskResult.foldResult ( fun ( PostId id ) -> id.ToString()) string
828+
829+ Expect.same ( newPostId.ToString()) actual
830+ }
831+
832+ testCaseTask " foldResult with Task(Error x)"
833+ <| fun _ ->
834+ task {
835+ let! actual =
836+ createPostFailure validCreatePostRequest
837+ |> TaskResult.foldResult string ( fun ex -> ex.Message)
838+
839+ Expect.same ( commonEx.Message) actual
840+ }
841+ ]
You can’t perform that action at this time.
0 commit comments