From b5a80f69cb2e2793e5134e23a0eb3e72cdbdbe0b Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 03:48:12 +0800 Subject: Add multi-source bond quote probe fields and daily fallback (3d-20) --- tests/FundLab.Web.Tests/BoundaryTests.fs | 35 +++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'tests/FundLab.Web.Tests/BoundaryTests.fs') diff --git a/tests/FundLab.Web.Tests/BoundaryTests.fs b/tests/FundLab.Web.Tests/BoundaryTests.fs index 4714632..2892633 100644 --- a/tests/FundLab.Web.Tests/BoundaryTests.fs +++ b/tests/FundLab.Web.Tests/BoundaryTests.fs @@ -463,7 +463,15 @@ module ConfirmationBoundaryTests = let model = init () let raw : RawBondQuote = - { code = "110075"; name = box "南航转债"; price = box "106.368"; maturityDate = null } + { + code = "110075" + name = box "南航转债" + price = box "106.368" + cleanPrice = null + accruedInterest = null + date = null + maturityDate = null + } let updated, _ = update (BondQuoteCompleted(model.bondQuoteSeq, raw)) model @@ -473,18 +481,39 @@ module ConfirmationBoundaryTests = Assert.Equal(None, updated.bondQuoteMessage) Assert.False(updated.bondQuoteInFlight) + [] + let ``bond quote completion keeps clean price, accrued interest and quote date`` () = + let model = init () + + let raw : RawBondQuote = + { + code = "019547" + name = null + price = box "119.858" + cleanPrice = box "119.858" + accruedInterest = box "0.5000" + date = box "2026-09-21" + maturityDate = null + } + + let updated, _ = update (BondQuoteCompleted(model.bondQuoteSeq, raw)) model + + Assert.Equal(Some "119.858", updated.bondQuote |> Option.bind (fun quote -> quote.cleanPrice)) + Assert.Equal(Some "0.5000", updated.bondQuote |> Option.bind (fun quote -> quote.accruedInterest)) + Assert.Equal(Some "2026-09-21", updated.bondQuote |> Option.bind (fun quote -> quote.quoteDate)) + [] 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 + update (BondQuoteFailed(model.bondQuoteSeq, "AKShare collector failed: no valid bond 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.Contains("no valid bond quote for 019547", message) Assert.False(updated.bondQuoteInFlight) [] -- cgit v1.2.3