| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroOddLotParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsOddLot()
- {
- // SEIBro getOddLotInfo 실응답 fixture (무상증자 단주대금) — 1행. 산정기준·권리락일 매핑.
- // ⚠️ 응답엔 ISSUCO_CUSTNO·지급일(요청 파라미터)이 없어 파서는 담지 않는다(배치가 스탬핑).
- var rows = SeibroOddLotParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getOddLotInfo.xml")));
- Assert.AreEqual(1, rows.Count);
- var r = rows[0];
- Assert.AreEqual(new DateOnly(2018, 6, 11), r.RgtStdDt);
- Assert.AreEqual("102", r.RgtRacd);
- Assert.AreEqual("무상증자", r.RgtRacdNm);
- Assert.AreEqual("99", r.RgtRsnDetailSortCd);
- Assert.AreEqual("04", r.EstmStdTpcd, "상장일종가");
- Assert.AreEqual(new DateOnly(2018, 7, 2), r.EstmStdDt);
- Assert.AreEqual(3175m, r.EstmStdprc);
- Assert.AreEqual(new DateOnly(2018, 6, 8), r.XrgtDt, "권리락일");
- // ROST_CLOSE_* value="" → null
- Assert.IsNull(r.RostCloseBeginDt, "빈 명부폐쇄일 → null");
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenRgtStdDtMissing()
- {
- // 기대 행위: RGT_STD_DT(자연키 일부) 없으면 건너뛴다
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result>
- <RGT_RACD value="102"/>
- <ESTM_STDPRC value="1000"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroOddLotParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(0, rows.Count);
- }
- }
|