using System; using System.IO; using System.Text; using System.Text.Json; using Xunit; namespace QuantEngine.Core.Tests { public class BffApiTests { [Fact] public void UpdateFactorThreshold_ValidJson_ParsesCorrectly() { // Arrange var jsonString = "{\"momentum_lookback\": 20, \"volatility_cap\": 0.05}"; // Act using var doc = JsonDocument.Parse(jsonString); var root = doc.RootElement; var lookback = root.GetProperty("momentum_lookback").GetInt32(); var cap = root.GetProperty("volatility_cap").GetDouble(); // Assert Assert.Equal(20, lookback); Assert.Equal(0.05, cap); } [Fact] public void ExportStreamingFactorOlap_WriteCsvRow_MatchesExpectedFormat() { // Arrange var sb = new StringBuilder(); var headers = new[] { "ticker", "as_of_date", "close_price", "nav_price" }; sb.AppendLine(string.Join(",", headers)); var row = new object[] { "123456", "2026-07-25", 50000, 49800 }; sb.AppendLine(string.Join(",", row)); // Act var output = sb.ToString(); // Assert Assert.Contains("ticker,as_of_date,close_price,nav_price", output); Assert.Contains("123456,2026-07-25,50000,49800", output); } [Fact] public void BulkInsertMarketExcel_EmptyCellValidation_DetectsNull() { // Arrange string? ticker = null; double? price = null; // Act bool isInvalid = string.IsNullOrEmpty(ticker) || !price.HasValue; // Assert Assert.True(isInvalid); } } }