diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-22 01:54:55 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-22 01:54:55 +0800 |
| commit | 0d1af831c10683bb1e5a5853e5924c5ddfb1310d (patch) | |
| tree | 638c7a94fb213926aebaa443761313ddf7dcd499 /tests | |
| parent | aa4dba4f70749b459c3922ce68610c4d78e644e6 (diff) | |
| download | fund-lab-0d1af831c10683bb1e5a5853e5924c5ddfb1310d.tar.gz | |
Add bonds probe panel with live bond quote flow (3d-16)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/FundLab.Web.Tests/BoundaryTests.fs | 29 |
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 ()) |
