summaryrefslogtreecommitdiff
path: root/tests/FundLab.Web.Tests
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-22 01:54:55 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-22 01:54:55 +0800
commit0d1af831c10683bb1e5a5853e5924c5ddfb1310d (patch)
tree638c7a94fb213926aebaa443761313ddf7dcd499 /tests/FundLab.Web.Tests
parentaa4dba4f70749b459c3922ce68610c4d78e644e6 (diff)
downloadfund-lab-0d1af831c10683bb1e5a5853e5924c5ddfb1310d.tar.gz
Add bonds probe panel with live bond quote flow (3d-16)
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 ())