| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroXrcStkOptionXrcParserTests
- {
- [TestMethod]
- public void Parse_EmptySampleXml_ReturnsZeroRows_NoThrow()
- {
- // ⚠️ getXrcStkOptionXrcInfo 실샘플이 result="0"(0행) — 라이브 필드 검증 불가. 빈 결과 → 0행·무예외만 검증.
- var envelope = SeibroXml.Parse(SeibroFixtures.Read("getXrcStkOptionXrcInfo.xml"));
- Assert.AreEqual(0, envelope.ResultCount, "fixture 는 result=0");
- var rows = SeibroXrcStkOptionXrcParser.Parse(envelope);
- Assert.AreEqual(0, rows.Count);
- }
- [TestMethod]
- public void Parse_SyntheticSpecXml_MapsFields()
- {
- // 빈 fixture 대응 — 주식.md 스펙 기준 합성 XML 로 필드 매핑 로직만 검증 (운영 첫 수집 시 실 필드명 로그 확인 필요).
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result>
- <BOND_ISIN value="KR6019591561"/>
- <BOND_KOR_SECN_NM value="에이비씨5CB"/>
- <BOND_KIND_NM value="CB"/>
- <XRC_STK_ISIN value="KR7019590007"/>
- <STK_KOR_SECN_NM value="에이비씨"/>
- <RGT_STD_DT value="20180321"/>
- <XRC_POSS_BEGIN_DT value="20160609"/>
- <XRC_POSS_EXPRY_DT value="20200609"/>
- <XRC_AMT value="100000000"/>
- <XRC_QTY value="20000"/>
- <XRC_PRICE value="5000.0"/>
- <LIST_DT value="20180405"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroXrcStkOptionXrcParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count);
- var r = rows[0];
- Assert.AreEqual("KR6019591561", r.BondIsin);
- Assert.AreEqual("CB", r.BondKindNm);
- Assert.AreEqual("KR7019590007", r.XrcStkIsin);
- Assert.AreEqual(new DateOnly(2018, 3, 21), r.RgtStdDt, "권리행사일");
- Assert.AreEqual(new DateOnly(2016, 6, 9), r.XrcPossBeginDt);
- Assert.AreEqual(20000m, r.XrcQty);
- Assert.AreEqual(5000m, r.XrcPrice);
- Assert.AreEqual(new DateOnly(2018, 4, 5), r.ListDt);
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenBondIsinOrDateMissing()
- {
- // BOND_ISIN 또는 RGT_STD_DT 없으면 건너뛴다
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result>
- <BOND_ISIN value="KR6019591561"/>
- <XRC_QTY value="100"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroXrcStkOptionXrcParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(0, rows.Count);
- }
- }
|