SeibroGmeetParserTests.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroGmeetParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsMeetingFields()
  8. {
  9. // SEIBro getGmeetInfo 실응답 fixture (삼성전자 2017 정기총회) — 1행. 날짜·Y/N·시각 매핑.
  10. var rows = SeibroGmeetParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getGmeetInfo.xml")));
  11. Assert.AreEqual(1, rows.Count);
  12. var m = rows[0];
  13. Assert.AreEqual(593, m.IssucoCustno);
  14. Assert.AreEqual("00593", m.IssuinNo);
  15. Assert.AreEqual("001", m.GmetKacd, "정기총회");
  16. Assert.AreEqual(new DateOnly(2017, 12, 31), m.RgtStdDt);
  17. Assert.AreEqual(new DateOnly(2018, 3, 23), m.GmetDt);
  18. Assert.AreEqual("0900", m.GmetTtm);
  19. Assert.AreEqual(new DateOnly(2018, 1, 1), m.RostCloseBeginDt);
  20. Assert.IsTrue(m.GmetOmeetYn, "총회개최여부 Y");
  21. Assert.IsFalse(m.EvoteYn, "전자투표 N");
  22. Assert.IsFalse(m.DferYn, "연기 N");
  23. Assert.IsFalse(m.IsElectronicSecurity, "전자증권 N (ELTSC_YN)");
  24. Assert.IsFalse(m.StkBuyreqRlYn);
  25. Assert.AreEqual("1", m.GmetPlaceTpcd, "서울");
  26. Assert.IsTrue(m.GmetPlace!.Contains("삼성전자빌딩"));
  27. // COUNCL_DTERMIN_PUBN_DT value="" → null (빈값 방어)
  28. Assert.IsNull(m.CouncilDterminPubnDt, "빈 공시일자 → null");
  29. }
  30. [TestMethod]
  31. public void Parse_SkipsRow_WhenNaturalKeyMissing()
  32. {
  33. // 기대 행위: ISSUCO_CUSTNO/GMET_KACD/RGT_STD_DT 중 하나라도 없으면 건너뛴다
  34. const string xml = """
  35. <vector result="2">
  36. <data vectorkey="0" type="Document"><result>
  37. <ISSUCO_CUSTNO value="10"/>
  38. <RGT_STD_DT value="20200101"/>
  39. </result></data>
  40. <data vectorkey="1" type="Document"><result>
  41. <ISSUCO_CUSTNO value="20"/>
  42. <GMET_KACD value="002"/>
  43. <RGT_STD_DT value="20200601"/>
  44. </result></data>
  45. </vector>
  46. """;
  47. var rows = SeibroGmeetParser.Parse(SeibroXml.Parse(xml));
  48. Assert.AreEqual(1, rows.Count, "GMET_KACD 없는 첫 행 스킵");
  49. Assert.AreEqual(20, rows[0].IssucoCustno);
  50. Assert.AreEqual("002", rows[0].GmetKacd);
  51. }
  52. }