| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroDivSchedulParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsFields_Samsung()
- {
- // SEIBro getDivSchedulInfo 실응답 fixture (삼성전자) — 9행, 전부 현금배당(02) · 권리락일/명부폐쇄/전자증권 매핑
- var rows = SeibroDivSchedulParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getDivSchedulInfo.xml")));
- Assert.AreEqual(9, rows.Count);
- var first = rows.Single(c => c.RgtStdDt == new DateOnly(2018, 3, 31));
- Assert.AreEqual(593, first.IssucoCustno);
- Assert.AreEqual("삼성전자", first.RepSecnNm);
- Assert.AreEqual("103", first.RgtRacd, "배당/분배");
- Assert.AreEqual("02", first.RgtRsnDetailSortCd, "현금배당");
- Assert.AreEqual("2", first.AllocWhcd);
- Assert.AreEqual("3", first.SetaccTpcd, "분기");
- Assert.AreEqual("1", first.FixTpcd, "확정");
- Assert.AreEqual(new DateOnly(2018, 4, 1), first.RostCloseBeginDt);
- Assert.AreEqual(new DateOnly(2018, 4, 14), first.RostCloseExpryDt);
- Assert.AreEqual(new DateOnly(2018, 3, 29), first.XrgtDt, "권리락일 YYYYMMDD 파싱");
- Assert.IsFalse(first.IsElectronicSecurity!.Value, "ELTSC_YN=N → false");
- }
- [TestMethod]
- public void Parse_EmptyDate_Null_AndSkipsIncompleteKey()
- {
- // 기대 행위: XRGT_DT 빈값 → null, 자연키(회사번호/기준일/세부유형) 미충족 행은 건너뛴다
- const string xml = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result>
- <ISSUCO_CUSTNO value="593"/>
- <REP_SECN_NM value="삼성전자"/>
- <RGT_RSN_DTAIL_SORT_CD value="04"/>
- <RGT_STD_DT value="20201231"/>
- <XRGT_DT value=""/>
- <ELTSC_YN value="Y"/>
- </result></data>
- <data vectorkey="1" type="Document"><result>
- <REP_SECN_NM value="누락회사번호"/>
- <RGT_RSN_DTAIL_SORT_CD value="02"/>
- <RGT_STD_DT value="20201231"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroDivSchedulParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count, "회사번호 없는 행은 skip");
- Assert.IsNull(rows[0].XrgtDt, "value=\"\" → null");
- Assert.AreEqual("04", rows[0].RgtRsnDetailSortCd, "무배당");
- Assert.IsTrue(rows[0].IsElectronicSecurity!.Value, "ELTSC_YN=Y → true");
- }
- }
|