SeibroStkListParserTests.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroStkListParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsCirclForms()
  8. {
  9. // SEIBro getStkListInfo 실응답 fixture (2018-12 유통형태변경) — 다수 행. 변경전/후 유통형태 코드 + 적용일.
  10. var rows = SeibroStkListParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStkListInfo.xml")));
  11. Assert.IsTrue(rows.Count >= 100, "표본 행 다수");
  12. var etf = rows.Single(c => c.Isin == "KR7314700006");
  13. Assert.AreEqual("314700", etf.ShotnIsin);
  14. Assert.AreEqual("211", etf.BfaltCirclForm, "변경전 예탁지정");
  15. Assert.AreEqual("110", etf.AfaltCirclForm, "변경후 유가");
  16. Assert.AreEqual(new DateOnly(2018, 12, 21), etf.ApliDt);
  17. // 신규 등록: 변경전 유통형태 빈값 → null
  18. var newlyListed = rows.Single(c => c.Isin == "KR7313150005");
  19. Assert.IsNull(newlyListed.BfaltCirclForm, "BFALT value=\"\" → null");
  20. Assert.AreEqual("241", newlyListed.AfaltCirclForm, "변경후 권리");
  21. }
  22. [TestMethod]
  23. public void Parse_SkipsRow_WhenApliDtMissing()
  24. {
  25. // 기대 행위: 적용일 없으면 건너뛴다
  26. const string xml = """
  27. <vector result="2">
  28. <data vectorkey="0" type="Document"><result>
  29. <ISIN value="KR7000000001"/>
  30. <SHOTN_ISIN value="000001"/>
  31. <KOR_SECN_NM value="적용일없음"/>
  32. <AFALT_CIRCL_FORM value="211"/>
  33. </result></data>
  34. <data vectorkey="1" type="Document"><result>
  35. <ISSUCO_CUSTNO value="10"/>
  36. <ISIN value="KR7000000002"/>
  37. <SHOTN_ISIN value="000002"/>
  38. <KOR_SECN_NM value="정상"/>
  39. <BFALT_CIRCL_FORM value="211"/>
  40. <AFALT_CIRCL_FORM value="910"/>
  41. <APLI_DT value="20200315"/>
  42. </result></data>
  43. </vector>
  44. """;
  45. var rows = SeibroStkListParser.Parse(SeibroXml.Parse(xml));
  46. Assert.AreEqual(1, rows.Count);
  47. Assert.AreEqual("KR7000000002", rows[0].Isin);
  48. Assert.AreEqual(10, rows[0].IssucoCustno);
  49. Assert.AreEqual(new DateOnly(2020, 3, 15), rows[0].ApliDt);
  50. }
  51. }