| 123456789101112131415161718192021222324252627282930313233343536373839 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- /// <summary>SEIBro getNationFrsecSetlInfo 파서 — INTL_BIZ_CACD(1110매수/1120매도)·SECN_TPCD·SETL_COUNT·FRSEC_SETL_AMT 매핑 + 자연키 결측 스킵.</summary>
- [TestClass]
- public sealed class SeibroNationFrsecSetlParserTests
- {
- [TestMethod]
- public void Parse_SampleXml_MapsBuySellRows()
- {
- var rows = SeibroNationFrsecSetlParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getNationFrsecSetlInfo.xml")));
- Assert.AreEqual(7, rows.Count, "매수4 + 매도4 중 실샘플 7행");
- var buyStock = rows.Single(c => c.IntlBizCacd == "1110" && c.SecnTpcd == "71");
- Assert.AreEqual(1591L, buyStock.SetlCount, "매수 외화주식 결제건수");
- Assert.AreEqual(37289660.18m, buyStock.FrsecSetlAmt, "결제금액 USD");
- var sellStock = rows.Single(c => c.IntlBizCacd == "1120" && c.SecnTpcd == "71");
- Assert.AreEqual(917L, sellStock.SetlCount, "매도 외화주식 결제건수");
- Assert.AreEqual(34514711.36m, sellStock.FrsecSetlAmt);
- }
- [TestMethod]
- public void Parse_MissingKeyField_SkipsRow()
- {
- const string xml = """
- <vector result="3">
- <data vectorkey="0" type="Document"><result><SECN_TPCD value="71"/><SETL_COUNT value="10"/></result></data>
- <data vectorkey="1" type="Document"><result><INTL_BIZ_CACD value="1110"/><SETL_COUNT value="5"/></result></data>
- <data vectorkey="2" type="Document"><result><INTL_BIZ_CACD value="1110"/><SECN_TPCD value="71"/><SETL_COUNT value="3"/></result></data>
- </vector>
- """;
- var rows = SeibroNationFrsecSetlParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count, "INTL_BIZ_CACD 또는 SECN_TPCD 없는 행 스킵");
- Assert.AreEqual(3L, rows[0].SetlCount);
- }
- }
|