| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroStkIncdecParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsFields_AndNegativeQty()
- {
- // SEIBro getStkIncdecDetails 실응답 fixture (삼성전자) — 3행. 이익소각(음수)·액면분할.
- var rows = SeibroStkIncdecParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStkIncdecDetails.xml")));
- Assert.AreEqual(3, rows.Count);
- var split = rows.Single(c => c.SecnIssuNm == "액면분할");
- Assert.AreEqual(593, split.IssucoCustno);
- Assert.AreEqual("KR7005930003", split.Isin);
- Assert.AreEqual("0101", split.SecnKacd, "보통주");
- Assert.AreEqual(75, split.SecnIssuNtimes);
- Assert.AreEqual(new DateOnly(2018, 5, 3), split.IssuDt);
- Assert.AreEqual(100m, split.Issuprc);
- Assert.AreEqual(6419324700L, split.IssuQty);
- Assert.AreEqual("201", split.SecnIssuRacd);
- Assert.AreEqual(new DateOnly(2018, 5, 4), split.ListDt);
- var cancel = rows.Single(c => c.IssuDt == new DateOnly(2018, 1, 30));
- Assert.AreEqual(-712000L, cancel.IssuQty, "이익소각 감소 = 음수 부호 보존");
- Assert.AreEqual(0m, cancel.Issuprc, "ISSUPRC 0 은 유효값");
- }
- [TestMethod]
- public void Parse_SameNtimes_DifferentDate_BothKept()
- {
- // 기대 행위: 동일 발행횟수(75)가 발행일/사유 다르면 각각 별개 행 — (Isin,Ntimes) 단독 자연키로는 충돌하므로 IssuDt·Racd 포함
- var rows = SeibroStkIncdecParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStkIncdecDetails.xml")));
- var ntimes75 = rows.Where(c => c.SecnIssuNtimes == 75).ToList();
- Assert.AreEqual(2, ntimes75.Count, "발행횟수 75 가 2행 (액면분할 + 이익소각)");
- }
- }
|