SeibroBondIssuParserTests.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getBondIssuInfo 파서 — 실샘플(1행) 필드 매핑 + 자연키(ISIN/발행일) 결측 스킵.</summary>
  4. [TestClass]
  5. public sealed class SeibroBondIssuParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_SampleXml_MapsIssuanceRow()
  9. {
  10. var rows = SeibroBondIssuParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getBondIssuInfo.xml")));
  11. Assert.AreEqual(1, rows.Count);
  12. var row = rows[0];
  13. Assert.AreEqual("KR6268761881", row.Isin);
  14. Assert.AreEqual(new DateOnly(2018, 8, 3), row.IssuDt);
  15. Assert.AreEqual(29998, row.IssucoCustno);
  16. Assert.AreEqual("SK해운", row.IssucoCustNm);
  17. Assert.AreEqual("SK해운 61", row.KorSecnNm);
  18. }
  19. [TestMethod]
  20. public void Parse_MissingIsinOrIssuDt_SkipsRow()
  21. {
  22. const string xml = """
  23. <vector result="2">
  24. <data vectorkey="0" type="Document"><result><ISSU_DT value="20180803"/><ISSUCO_CUSTNO value="1"/></result></data>
  25. <data vectorkey="1" type="Document"><result><ISIN value="KR6268761881"/></result></data>
  26. </vector>
  27. """;
  28. var rows = SeibroBondIssuParser.Parse(SeibroXml.Parse(xml));
  29. Assert.AreEqual(0, rows.Count, "ISIN 없음·발행일 없음 둘 다 스킵");
  30. }
  31. }