SeibroOddLotParserTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroOddLotParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsOddLot()
  8. {
  9. // SEIBro getOddLotInfo 실응답 fixture (무상증자 단주대금) — 1행. 산정기준·권리락일 매핑.
  10. // ⚠️ 응답엔 ISSUCO_CUSTNO·지급일(요청 파라미터)이 없어 파서는 담지 않는다(배치가 스탬핑).
  11. var rows = SeibroOddLotParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getOddLotInfo.xml")));
  12. Assert.AreEqual(1, rows.Count);
  13. var r = rows[0];
  14. Assert.AreEqual(new DateOnly(2018, 6, 11), r.RgtStdDt);
  15. Assert.AreEqual("102", r.RgtRacd);
  16. Assert.AreEqual("무상증자", r.RgtRacdNm);
  17. Assert.AreEqual("99", r.RgtRsnDetailSortCd);
  18. Assert.AreEqual("04", r.EstmStdTpcd, "상장일종가");
  19. Assert.AreEqual(new DateOnly(2018, 7, 2), r.EstmStdDt);
  20. Assert.AreEqual(3175m, r.EstmStdprc);
  21. Assert.AreEqual(new DateOnly(2018, 6, 8), r.XrgtDt, "권리락일");
  22. // ROST_CLOSE_* value="" → null
  23. Assert.IsNull(r.RostCloseBeginDt, "빈 명부폐쇄일 → null");
  24. }
  25. [TestMethod]
  26. public void Parse_SkipsRow_WhenRgtStdDtMissing()
  27. {
  28. // 기대 행위: RGT_STD_DT(자연키 일부) 없으면 건너뛴다
  29. const string xml = """
  30. <vector result="1">
  31. <data vectorkey="0" type="Document"><result>
  32. <RGT_RACD value="102"/>
  33. <ESTM_STDPRC value="1000"/>
  34. </result></data>
  35. </vector>
  36. """;
  37. var rows = SeibroOddLotParser.Parse(SeibroXml.Parse(xml));
  38. Assert.AreEqual(0, rows.Count);
  39. }
  40. }