SeibroCDParserTests.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getCDInfo 파서 — 빈 fixture(result="0") 빈결과 검증 + 스펙 기반 합성 XML 필드 매핑.</summary>
  4. [TestClass]
  5. public sealed class SeibroCDParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_EmptySampleXml_ReturnsNoRows()
  9. {
  10. var rows = SeibroCDParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getCDInfo.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. <ISSUCO_CUSTNO value="3061"/>
  21. <KOR_SECN_NM value="테스트은행 CD 20180801-91"/>
  22. <ISSU_CUR_CD value="KRW"/>
  23. <FIRST_ISSU_AMT value="10000000000"/>
  24. <ISSU_WHCD value="2"/>
  25. <FACE_AMT value="10000000000"/>
  26. <SALE_AMT value="9950000000"/>
  27. <DISCN_RATE value="1.85"/>
  28. <INT_PAY_MANN_TPCD value="1"/>
  29. <ISSU_DT value="20180801"/>
  30. <XPIR_DT value="20181031"/>
  31. <ELTSC_YN value="Y"/>
  32. </result></data>
  33. </vector>
  34. """;
  35. var rows = SeibroCDParser.Parse(SeibroXml.Parse(xml));
  36. Assert.AreEqual(1, rows.Count);
  37. var row = rows[0];
  38. Assert.AreEqual(3061, row.IssucoCustno);
  39. Assert.AreEqual("KRW", row.IssuCurCd);
  40. Assert.AreEqual(10000000000m, row.FirstIssuAmt);
  41. Assert.AreEqual(1.85m, row.DiscnRate);
  42. Assert.AreEqual("1", row.IntPayMannTpcd, "할인식");
  43. Assert.AreEqual(new DateOnly(2018, 8, 1), row.IssuDt);
  44. Assert.AreEqual(new DateOnly(2018, 10, 31), row.XpirDt);
  45. Assert.IsTrue(row.EltscYn);
  46. }
  47. }