SeibroGmeetMeasureParserTests.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroGmeetMeasureParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsAgendas()
  8. {
  9. // SEIBro getGmeetMeasureInfo 실응답 fixture (삼성전자 2017 총회 안건 11건) — AGENDA_SEQ·결과·투표방식 매핑.
  10. var rows = SeibroGmeetMeasureParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getGmeetMeasureInfo.xml")));
  11. Assert.AreEqual(11, rows.Count);
  12. var first = rows.Single(c => c.AgendaSeq == 1);
  13. Assert.AreEqual(593, first.IssucoCustno);
  14. Assert.AreEqual(new DateOnly(2017, 12, 31), first.RgtStdDt);
  15. Assert.AreEqual(new DateOnly(2018, 3, 23), first.GmetDt);
  16. Assert.AreEqual("001", first.GmetKacd);
  17. Assert.AreEqual("재무제표승인", first.AgendaNm);
  18. Assert.AreEqual("APPROVAL OF FINANCIAL STATEMENTS", first.EngAgendaNm);
  19. Assert.AreEqual("9", first.VoteMannTpcd, "해당없음");
  20. Assert.AreEqual("1", first.GmetResultTpcd, "승인");
  21. Assert.AreEqual("1", first.AgendaSchSeqo, "CHAR(6) 우측공백 Trim");
  22. // 세부안건(사외이사 선임) — DTAIL_AGENDA_NM 채워짐
  23. var director = rows.Single(c => c.AgendaSeq == 2);
  24. Assert.AreEqual("사외이사 선임", director.AgendaNm);
  25. Assert.AreEqual("김종훈", director.DtailAgendaNm);
  26. }
  27. [TestMethod]
  28. public void Parse_SkipsRow_WhenAgendaSeqOrNameMissing()
  29. {
  30. // 기대 행위: AGENDA_SEQ 또는 AGENDA_NM 없으면 건너뛴다
  31. const string xml = """
  32. <vector result="2">
  33. <data vectorkey="0" type="Document"><result>
  34. <ISSUCO_CUSTNO value="10"/>
  35. <RGT_STD_DT value="20200101"/>
  36. <AGENDA_NM value="안건있으나번호없음"/>
  37. </result></data>
  38. <data vectorkey="1" type="Document"><result>
  39. <ISSUCO_CUSTNO value="10"/>
  40. <RGT_STD_DT value="20200101"/>
  41. <AGENDA_SEQ value="1"/>
  42. <AGENDA_NM value="정상안건"/>
  43. </result></data>
  44. </vector>
  45. """;
  46. var rows = SeibroGmeetMeasureParser.Parse(SeibroXml.Parse(xml));
  47. Assert.AreEqual(1, rows.Count);
  48. Assert.AreEqual(1, rows[0].AgendaSeq);
  49. Assert.AreEqual("정상안건", rows[0].AgendaNm);
  50. }
  51. }