| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- /// <summary>SEIBro getDerivCombiIssuInfo 파서 — 소문자 <result> 래퍼(래퍼 대소문자 무시 흡수) 3필드 매핑 + 자연키 ISIN 결측 스킵.</summary>
- [TestClass]
- public sealed class SeibroDerivCombiIssuParserTests
- {
- [TestMethod]
- public void Parse_SampleXml_LowercaseWrapper_MapsIssuanceRows()
- {
- var rows = SeibroDerivCombiIssuParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getDerivCombiIssuInfo.xml")));
- // 실샘플은 다수 종목(발행일 스윕 결과). 첫 행 검증 + 발행회사고객번호 정수 파싱.
- Assert.IsTrue(rows.Count > 1, "다수 발행종목");
- var first = rows[0];
- Assert.AreEqual("KR6533308872", first.Isin);
- Assert.AreEqual("삼성증권19370(ELS)", first.KorSecnNm);
- Assert.AreEqual(1636, first.IssucoCustno);
- // 사모 종목명(괄호) 도 정상 매핑
- var privateOffer = rows.Single(c => c.Isin == "KR6573314871");
- Assert.AreEqual("한국투자증권7133(사모/ELS)", privateOffer.KorSecnNm);
- Assert.AreEqual(3049, privateOffer.IssucoCustno);
- }
- [TestMethod]
- public void Parse_MissingIsin_SkipsRow()
- {
- const string xml = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result><KOR_SECN_NM value="종목명"/><ISSUCO_CUSTNO value="1"/></result></data>
- <data vectorkey="1" type="Document"><result><ISIN value="KR6533308872"/></result></data>
- </vector>
- """;
- var rows = SeibroDerivCombiIssuParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count, "ISIN 없는 행 스킵");
- Assert.AreEqual("KR6533308872", rows[0].Isin);
- }
- }
|