| 123456789101112131415161718192021222324252627282930313233343536373839 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- /// <summary>SEIBro getBondOptionXrcInfo 파서 — 실샘플(1행) 필드 매핑 + 빈 날짜(XRC_BEGIN_DT="") null + 자연키 결측 스킵.</summary>
- [TestClass]
- public sealed class SeibroBondOptionXrcParserTests
- {
- [TestMethod]
- public void Parse_SampleXml_MapsRedemptionRow()
- {
- var rows = SeibroBondOptionXrcParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getBondOptionXrcInfo.xml")));
- Assert.AreEqual(1, rows.Count);
- var row = rows[0];
- Assert.AreEqual("KR6225693573", row.Isin);
- Assert.AreEqual("제이티캐피탈제일차유동화전문 3-1(콜/변)", row.KorSecnNm);
- Assert.AreEqual(new DateOnly(2018, 8, 24), row.ErlyRedDt);
- Assert.IsNull(row.XrcBeginDt, "빈 value 는 null");
- Assert.IsNull(row.XrcExpryDt);
- Assert.AreEqual("9401", row.OptionTpcd, "CALL");
- Assert.AreEqual(3.75m, row.ApliIrate);
- Assert.AreEqual(2000000000m, row.ErlyRedamtVal);
- Assert.AreEqual(117842465m, row.IntPayAmt);
- Assert.AreEqual(3.08m, row.XrcRatio);
- }
- [TestMethod]
- public void Parse_MissingErlyRedDt_SkipsRow()
- {
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result><ISIN value="KR6225693573"/><OPTION_TPCD value="9401"/></result></data>
- </vector>
- """;
- var rows = SeibroBondOptionXrcParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(0, rows.Count, "조기상환일 없으면 스킵");
- }
- }
|