summaryrefslogtreecommitdiff
path: root/tests/FundLab.Web.Tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/FundLab.Web.Tests')
-rw-r--r--tests/FundLab.Web.Tests/BoundaryTests.fs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/FundLab.Web.Tests/BoundaryTests.fs b/tests/FundLab.Web.Tests/BoundaryTests.fs
index 6b4eef8..4f2137a 100644
--- a/tests/FundLab.Web.Tests/BoundaryTests.fs
+++ b/tests/FundLab.Web.Tests/BoundaryTests.fs
@@ -459,6 +459,35 @@ module ConfirmationBoundaryTests =
Assert.False(updated.navSeriesInFlight)
[<Fact>]
+ let ``bond quote completion stores decoded quote and clears the message`` () =
+ let model = init ()
+
+ let raw : RawBondQuote =
+ { code = "110075"; name = box "南航转债"; price = box "106.368"; maturityDate = null }
+
+ let updated, _ = update (BondQuoteCompleted(model.bondQuoteSeq, raw)) model
+
+ Assert.Equal(Some "南航转债", updated.bondQuote |> Option.bind (fun quote -> quote.name))
+ Assert.Equal(Some "106.368", updated.bondQuote |> Option.bind (fun quote -> quote.price))
+ Assert.Equal(None, updated.bondQuote |> Option.bind (fun quote -> quote.maturityDate))
+ Assert.Equal(None, updated.bondQuoteMessage)
+ Assert.False(updated.bondQuoteInFlight)
+
+ [<Fact>]
+ let ``bond quote failure shows an unavailable message without a quote`` () =
+ let model = { init () with bondQuoteInFlight = true }
+
+ let updated, _ =
+ update (BondQuoteFailed(model.bondQuoteSeq, "AKShare collector failed: no valid quote for 019547")) model
+
+ Assert.Equal(None, updated.bondQuote)
+
+ let message = updated.bondQuoteMessage |> Option.defaultValue ""
+ Assert.Contains("不可用", message)
+ Assert.Contains("no valid quote for 019547", message)
+ Assert.False(updated.bondQuoteInFlight)
+
+ [<Fact>]
let ``order decode keeps decimal strings and decodes option fields`` () =
let confirmed = Api.decodeOrder (sampleConfirmedRaw ())
let pending = Api.decodeOrder (samplePendingRaw ())