SeibroIntPayParserTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getIntPayInfo 파서 — 빈 fixture(result="0") 빈결과 검증 + 스펙 기반 합성 XML 필드 매핑.</summary>
  4. [TestClass]
  5. public sealed class SeibroIntPayParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_EmptySampleXml_ReturnsNoRows()
  9. {
  10. var rows = SeibroIntPayParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getIntPayInfo.xml")));
  11. Assert.AreEqual(0, rows.Count, "실샘플 result=0 빈결과");
  12. }
  13. [TestMethod]
  14. public void Parse_SyntheticXml_MapsSpecFields()
  15. {
  16. // 빈 fixture 대응 — 채권.md 스펙 기준 합성 XML
  17. const string xml = """
  18. <vector result="1">
  19. <data vectorkey="0" type="Document"><result>
  20. <COUPON_RATE value="4.485"/>
  21. <INT_PAY_WAY_TPCD value="1"/>
  22. <INT_PAY_CYCLE_TERMS value="3"/>
  23. <INT_PAY_CYCLE_TPCD value="23"/>
  24. <RVLT_SEVER_TPCD value="2"/>
  25. <ACRINT_PAY_YN value="Y"/>
  26. <BANK_HOLIDAY_INT_PAYDD_TPCD value="2"/>
  27. <INT_PAY_TIMS_TPCD value="01"/>
  28. <BEFORE_DATE value="20180803"/>
  29. <AFTER_DATE value="20181103"/>
  30. </result></data>
  31. </vector>
  32. """;
  33. var rows = SeibroIntPayParser.Parse(SeibroXml.Parse(xml));
  34. Assert.AreEqual(1, rows.Count);
  35. var row = rows[0];
  36. Assert.AreEqual(4.485m, row.CouponRate);
  37. Assert.AreEqual("1", row.IntPayWayTpcd);
  38. Assert.AreEqual(3, row.IntPayCycleTerms);
  39. Assert.AreEqual("23", row.IntPayCycleTpcd, "개월 주기");
  40. Assert.IsTrue(row.AcrintPayYn);
  41. Assert.AreEqual("01", row.IntPayTimsTpcd, "후급");
  42. Assert.AreEqual(new DateOnly(2018, 8, 3), row.BeforeDate);
  43. Assert.AreEqual(new DateOnly(2018, 11, 3), row.AfterDate);
  44. }
  45. }