using Infrastructure.StockData; namespace Application.Tests; /// SEIBro getRedIsinInfo 파서 — 대문자 <RESULT> 래퍼. 상환일별 상환종목·행사구분·수량 매핑 + 자연키(ISIN/행사구분) 결측 스킵. [TestClass] public sealed class SeibroRedIsinParserTests { [TestMethod] public void Parse_SampleXml_MapsRedemptionRows() { var rows = SeibroRedIsinParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getRedIsinInfo.xml"))); Assert.AreEqual(12, rows.Count, "상환종목 12건"); var first = rows[0]; Assert.AreEqual("KR6552327845", first.Isin); Assert.AreEqual("3", first.DerisecExerTpcd, "조기상환"); Assert.AreEqual(132000000m, first.RedQty); var large = rows.Single(c => c.Isin == "KR6733302857"); Assert.AreEqual(19850000000m, large.RedQty, "대형 상환수량"); } [TestMethod] public void Parse_MissingKeys_SkipsRow() { const string xml = """ """; var rows = SeibroRedIsinParser.Parse(SeibroXml.Parse(xml)); Assert.AreEqual(0, rows.Count, "ISIN 없음·행사구분 없음 둘 다 스킵"); } }