| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroXrcStkStatParserTests
- {
- [TestMethod]
- public void Parse_EmptySampleXml_ReturnsZeroRows_NoThrow()
- {
- // ⚠️ getXrcStkStatInfo 실샘플이 result="0"(0행) — 라이브 필드 검증 불가. 빈 결과 → 0행·무예외만 검증.
- var envelope = SeibroXml.Parse(SeibroFixtures.Read("getXrcStkStatInfo.xml"));
- Assert.AreEqual(0, envelope.ResultCount, "fixture 는 result=0");
- var rows = SeibroXrcStkStatParser.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="KR6002221887"/>
- <BOND_SECN_NM value="한일철강3CB"/>
- <BOND_KIND_NM value="CB"/>
- <XRC_STK_ISIN value="KR7002220002"/>
- <STK_SECN_NM value="한일철강"/>
- <XRC_RATIO value="1.0"/>
- <XRC_PRICE value="2850.5"/>
- <SETACC_ENDTERM_LIMIT_DAYS value="15"/>
- <NEWSTK_ALOC_DD_BF_LIMIT_DAYS value="7"/>
- <DMAN_LIMIT_RSN_CONTENT value="정관상 제한"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroXrcStkStatParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count);
- var r = rows[0];
- Assert.AreEqual("KR6002221887", r.BondIsin);
- Assert.AreEqual("CB", r.BondKindNm);
- Assert.AreEqual("KR7002220002", r.XrcStkIsin);
- Assert.AreEqual(2850.5m, r.XrcPrice);
- Assert.AreEqual(15, r.SetaccEndtermLimitDays);
- Assert.AreEqual("정관상 제한", r.DmanLimitRsnContent);
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenIsinsMissing()
- {
- // BOND_ISIN 또는 XRC_STK_ISIN 없으면 건너뛴다
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result>
- <BOND_ISIN value="KR6002221887"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroXrcStkStatParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(0, rows.Count);
- }
- }
|