From 72f466b9b3ea6ece726e6b182cfc36bbd3f6fa15 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 08:58:52 +0800 Subject: Add stock probe market/adjust/suspension fields and StockRules (3d-30 B1-B2) --- tests/FundLab.Api.Tests/FundValuationTests.fs | 2 +- tests/FundLab.Api.Tests/StockQuoteProbeTests.fs | 18 ++++++++++++++++++ tests/FundLab.Api.Tests/StockSellTests.fs | 2 +- tests/FundLab.Api.Tests/StockTradeTests.fs | 3 +++ 4 files changed, 23 insertions(+), 2 deletions(-) (limited to 'tests/FundLab.Api.Tests') diff --git a/tests/FundLab.Api.Tests/FundValuationTests.fs b/tests/FundLab.Api.Tests/FundValuationTests.fs index 197686d..409bfba 100644 --- a/tests/FundLab.Api.Tests/FundValuationTests.fs +++ b/tests/FundLab.Api.Tests/FundValuationTests.fs @@ -7,7 +7,7 @@ open FundLab.Api module FundValuationSupport = let stockQuote (code: string) (price: decimal) : StockQuote = - { Code = code; Name = Some "贵州茅台"; Price = Some price; Currency = "CNY" } + { Code = code; Name = Some "贵州茅台"; Price = Some price; Currency = "CNY"; Market = Some "sh"; Adjust = Some "none"; Suspended = Some false } let bondQuote (code: string) (price: decimal) : BondQuote = { diff --git a/tests/FundLab.Api.Tests/StockQuoteProbeTests.fs b/tests/FundLab.Api.Tests/StockQuoteProbeTests.fs index 2cad557..b869f17 100644 --- a/tests/FundLab.Api.Tests/StockQuoteProbeTests.fs +++ b/tests/FundLab.Api.Tests/StockQuoteProbeTests.fs @@ -57,6 +57,21 @@ type StockQuoteProbeTests(fixture: PostgresFixture) = Assert.Equal("CNY", quote.Currency) | Error failure -> failwithf "expected a stock quote, got %A" failure + [] + member _.``probe parses market, adjust and suspension flags``() = + let json = + "{\"schema_version\":\"fund-lab.akshare.v1\",\"operation\":\"stock-quote\",\"source\":\"akshare\",\"source_revision\":\"akshare-test/eastmoney\",\"collected_at\":\"2026-09-21T08:00:00Z\",\"instrument\":{\"code\":\"000001\"},\"quote\":{\"name\":\"平安银行\",\"price\":\"11.2300\",\"currency\":\"CNY\",\"market\":\"sz\",\"adjust\":\"none\",\"suspended\":true}}" + + let probe = + AkshareStockQuoteProbe(StockQuoteProbeSupport.collectorReturning (fun () -> Ok json)) :> IStockQuoteProbe + + match probe.GetQuote("000001", CancellationToken.None) with + | Ok quote -> + Assert.Equal(Some "sz", quote.Market) + Assert.Equal(Some "none", quote.Adjust) + Assert.Equal(Some true, quote.Suspended) + | Error failure -> failwithf "expected a stock quote, got %A" failure + [] member _.``probe keeps a missing name missing instead of fabricating data``() = let json = StockQuoteProbeSupport.payload "600519" None (Some "1252.57") @@ -139,6 +154,9 @@ type StockQuoteProbeTests(fixture: PostgresFixture) = Name = Some "贵州茅台" Price = Some 1252.57m Currency = "CNY" + Market = Some "sh" + Adjust = Some "none" + Suspended = Some false }) let status, body = diff --git a/tests/FundLab.Api.Tests/StockSellTests.fs b/tests/FundLab.Api.Tests/StockSellTests.fs index cbdef8b..972293a 100644 --- a/tests/FundLab.Api.Tests/StockSellTests.fs +++ b/tests/FundLab.Api.Tests/StockSellTests.fs @@ -6,7 +6,7 @@ open FundLab.Api module StockSellSupport = let quote (code: string) (price: decimal) : StockQuote = - { Code = code; Name = Some "招商银行"; Price = Some price; Currency = "CNY" } + { Code = code; Name = Some "招商银行"; Price = Some price; Currency = "CNY"; Market = Some "sh"; Adjust = Some "none"; Suspended = Some false } let stubQuoteProbe (quotes: Map) = { new IStockQuoteProbe with diff --git a/tests/FundLab.Api.Tests/StockTradeTests.fs b/tests/FundLab.Api.Tests/StockTradeTests.fs index a2269a1..f8a8492 100644 --- a/tests/FundLab.Api.Tests/StockTradeTests.fs +++ b/tests/FundLab.Api.Tests/StockTradeTests.fs @@ -20,6 +20,9 @@ module StockTradeSupport = Name = Some "贵州茅台" Price = Some 1252.57m Currency = "CNY" + Market = Some "sh" + Adjust = Some "none" + Suspended = Some false } let appWithQuote (probe: IStockQuoteProbe) = -- cgit v1.2.3