| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroCostPaySchedulParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsPaymentRows()
- {
- // SEIBro getCostPaySchedul 실응답 fixture (2018-07-20 단주대금 다수) — 회사/종목/사유 매핑.
- // ⚠️ 응답엔 지급일·구분(요청 파라미터)이 없어 파서는 담지 않는다(배치가 스탬핑).
- var rows = SeibroCostPaySchedulParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getCostPaySchedul.xml")));
- Assert.IsTrue(rows.Count >= 100, "표본 행 다수");
- var first = rows.Single(c => c.Isin == "KR7066980004");
- Assert.AreEqual(8176, first.IssucoCustno);
- Assert.AreEqual("한성크린텍", first.KorSecnNm);
- Assert.AreEqual("0101", first.SecnKacd);
- Assert.AreEqual(new DateOnly(2018, 6, 25), first.RgtStdDt);
- Assert.AreEqual("국내CB행사", first.RgtRacdNm, "가이드 xlsx 누락분 — 실샘플 확인");
- Assert.AreEqual("99", first.RgtRsnDetailSortCd);
- // BW 행사도 존재
- Assert.IsTrue(rows.Any(c => c.RgtRacdNm == "국내BW행사"));
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenIsinMissing()
- {
- // 기대 행위: ISSUCO_CUSTNO 또는 ISIN 없으면 건너뛴다
- const string xml = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result>
- <ISSUCO_CUSTNO value="10"/>
- <KOR_SECN_NM value="ISIN없음"/>
- </result></data>
- <data vectorkey="1" type="Document"><result>
- <ISSUCO_CUSTNO value="10"/>
- <ISIN value="KR7000000001"/>
- <KOR_SECN_NM value="정상"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroCostPaySchedulParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count);
- Assert.AreEqual("KR7000000001", rows[0].Isin);
- }
- }
|