SeibroStddtParserTests.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroStddtParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsFields_Samsung()
  8. {
  9. // SEIBro getStddtInfo 실응답 fixture (삼성전자) — 3행, 전부 정기총회(001)
  10. var rows = SeibroStddtParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStddtInfo.xml")));
  11. Assert.AreEqual(3, rows.Count);
  12. var first = rows.Single(c => c.RgtStdDt == new DateOnly(2016, 12, 31));
  13. Assert.AreEqual(593, first.IssucoCustno);
  14. Assert.AreEqual("삼성전자", first.RepSecnNm);
  15. Assert.AreEqual("001", first.RgtRacd, "정기총회");
  16. Assert.AreEqual("정기총회", first.RgtRacdNm);
  17. Assert.AreEqual("99", first.RgtRsnDetailSortCd);
  18. }
  19. [TestMethod]
  20. public void Parse_SkipsRows_MissingNaturalKey()
  21. {
  22. // 기대 행위: 자연키(회사번호/기준일/사유코드/세부유형) 중 하나라도 없으면 건너뛴다
  23. const string xml = """
  24. <vector result="2">
  25. <data vectorkey="0" type="Document"><result>
  26. <ISSUCO_CUSTNO value="3572"/>
  27. <REP_SECN_NM value="상호변경회사"/>
  28. <RGT_STD_DT value="20151001"/>
  29. <RGT_RACD value="204"/>
  30. <RGT_RACD_NM value="상호변경"/>
  31. <RGT_RSN_DTAIL_SORT_CD value="90"/>
  32. </result></data>
  33. <data vectorkey="1" type="Document"><result>
  34. <ISSUCO_CUSTNO value="3572"/>
  35. <REP_SECN_NM value="사유코드누락"/>
  36. <RGT_STD_DT value="20151001"/>
  37. <RGT_RSN_DTAIL_SORT_CD value="90"/>
  38. </result></data>
  39. </vector>
  40. """;
  41. var rows = SeibroStddtParser.Parse(SeibroXml.Parse(xml));
  42. Assert.AreEqual(1, rows.Count, "RGT_RACD 없는 행은 skip");
  43. Assert.AreEqual("204", rows[0].RgtRacd, "상호변경 — Wave 3 트리거 코드");
  44. }
  45. }