SeibroBondOptionXrcParserTests.cs 1.5 KB

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