using Infrastructure.StockData;
namespace Application.Tests;
/// SEIBro getSecnFrsecSetlInfo 파서 — NATION_CD·SECN_TPCD·INTL_BIZ_CACD·SETL_ASK_QTY·SETL_AMT 매핑 + INTL_BIZ_CACD 결측 스킵.
[TestClass]
public sealed class SeibroSecnFrsecSetlParserTests
{
[TestMethod]
public void Parse_SampleXml_MapsBuySellSettlement()
{
var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getSecnFrsecSetlInfo.xml")));
Assert.AreEqual(2, rows.Count, "매수·매도 2행");
var buy = rows.Single(c => c.IntlBizCacd == "1110");
Assert.AreEqual("US", buy.NationCd);
Assert.AreEqual("71", buy.SecnTpcd);
Assert.AreEqual(1571m, buy.SetlAskQty, "매수 결제신청수량");
Assert.AreEqual(2804130m, buy.SetlAmt, "매수 결제금액 USD");
var sell = rows.Single(c => c.IntlBizCacd == "1120");
Assert.AreEqual(1216m, sell.SetlAskQty);
Assert.AreEqual(2169827m, sell.SetlAmt);
}
[TestMethod]
public void Parse_MissingIntlBizCacd_SkipsRow()
{
const string xml = """
""";
var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(xml));
Assert.AreEqual(1, rows.Count, "INTL_BIZ_CACD 없는 행 스킵");
Assert.AreEqual(200m, rows[0].SetlAmt);
}
}