using Infrastructure.StockData; namespace Application.Tests; /// SEIBro getCPInfo 파서 — 실샘플(1행) 필드 매핑 + 신용등급 4사(빈칸=null) + 할인기관·지급은행. ISIN 은 배치 스탬핑(파서 미포함). [TestClass] public sealed class SeibroCPParserTests { [TestMethod] public void Parse_SampleXml_MapsAllFields_AndCreditGrades() { var rows = SeibroCPParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getCPInfo.xml"))); Assert.AreEqual(1, rows.Count); var f = rows[0]; Assert.AreEqual(33427, f.IssucoCustno); Assert.AreEqual("윈케이제구차 20180702-364-10", f.KorSecnNm); Assert.AreEqual("KRW", f.IssuCurCd); Assert.AreEqual(5000000000m, f.IssuAmt); Assert.AreEqual("1204", f.SecnKacd, "Conduit ABCP"); Assert.AreEqual("1", f.BillCacd); Assert.AreEqual(new DateOnly(2018, 7, 2), f.SaleDt); Assert.AreEqual(new DateOnly(2018, 7, 2), f.IssuDt); Assert.AreEqual(new DateOnly(2019, 7, 1), f.XpirDt); Assert.AreEqual(3061, f.DiscnOrgCustno); Assert.AreEqual("교보증권", f.DiscnOrdNm); Assert.AreEqual(311, f.PayBankBrono); Assert.AreEqual("1", f.WholdTpcd, "상환시"); // 신용등급 4사: KIS/KR 존재, NICE/SCI 빈칸 → null Assert.AreEqual("112", f.KisValatGrdCd); Assert.AreEqual("112", f.KrValatGrdCd); Assert.IsNull(f.NiceValatGrdCd); Assert.IsNull(f.SciValatGrdCd); } }