using Infrastructure.StockData;
namespace Application.Tests;
/// SEIBro getNationFrsecCusInfo 파서 — 소문자 <result> 래퍼, SECN_TPCD·FRSEC_CUS_AMT USD 소수 매핑 + SECN_TPCD 결측 스킵.
[TestClass]
public sealed class SeibroNationFrsecCusParserTests
{
[TestMethod]
public void Parse_SampleXml_MapsSecnTpcdAndCustodyAmount()
{
var rows = SeibroNationFrsecCusParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getNationFrsecCusInfo.xml")));
Assert.AreEqual(4, rows.Count, "종목구분 4행");
var stock = rows.Single(c => c.SecnTpcd == "71");
Assert.AreEqual(5509745879.73m, stock.FrsecCusAmt, "외화주식 보관금액 USD 소수");
var bond = rows.Single(c => c.SecnTpcd == "75");
Assert.AreEqual(245404525m, bond.FrsecCusAmt, "외화채권 정수 금액");
}
[TestMethod]
public void Parse_MissingSecnTpcd_SkipsRow()
{
const string xml = """
""";
var rows = SeibroNationFrsecCusParser.Parse(SeibroXml.Parse(xml));
Assert.AreEqual(1, rows.Count, "종목구분 없는 행 스킵");
Assert.AreEqual("71", rows[0].SecnTpcd);
Assert.AreEqual(200.25m, rows[0].FrsecCusAmt);
}
}