using Infrastructure.StockData; namespace Application.Tests; /// SEIBro getESTBInfo 파서 — 실샘플(1행) 필드 매핑 + 신용등급 4사(NICE/KR 존재) + Y/N·일물. ISIN 은 배치 스탬핑(파서 미포함). [TestClass] public sealed class SeibroESTBParserTests { [TestMethod] public void Parse_SampleXml_MapsAllFields_AndCreditGrades() { var rows = SeibroESTBParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getESTBInfo.xml"))); Assert.AreEqual(1, rows.Count); var f = rows[0]; Assert.AreEqual(27597, f.IssucoCustno); Assert.AreEqual("3", f.EstbKacd, "PF AB"); Assert.AreEqual("디에스평택진위제일차 20180802-92-1(E)", f.KorSecnNm); Assert.AreEqual("KRW", f.IssuCurCd); Assert.AreEqual(5000000000m, f.IssuAmt); Assert.AreEqual("99", f.RecuWhcd, "면제"); Assert.AreEqual(new DateOnly(2018, 8, 2), f.IssuDt); Assert.AreEqual(new DateOnly(2018, 11, 2), f.XpirDt); Assert.AreEqual("92", f.Dayobj, "일물"); Assert.IsTrue(f.WholdYn, "WHOLD_YN=Y 징수"); Assert.IsFalse(f.GrorgYn, "GRORG_YN=N 무보증"); // 신용등급 4사: NICE/KR 존재, KIS/SCI 빈칸 → null Assert.AreEqual("112", f.NiceValatGrdCd); Assert.AreEqual("112", f.KrValatGrdCd); Assert.IsNull(f.KisValatGrdCd); Assert.IsNull(f.SciValatGrdCd); } }