| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroStkStatParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsFields_Samsung()
- {
- // SEIBro getStkStatInfo 실응답 fixture (삼성전자) — PVAL/VOTRNO/TOTAL_STK_CNT/ELTSC_YN/ISSUCO_CUSTNO 매핑
- var rows = SeibroStkStatParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStkStatInfo.xml")));
- Assert.AreEqual(1, rows.Count);
- var row = rows[0];
- Assert.AreEqual(593, row.IssucoCustno);
- Assert.AreEqual("KR7005930003", row.Isin);
- Assert.AreEqual("005930", row.ShortCode);
- Assert.AreEqual(100m, row.FaceValue, "PVAL 액면가");
- Assert.AreEqual(1m, row.VotingRights, "VOTRNO 1주당 의결권수");
- Assert.AreEqual(6419324700L, row.TotalIssuedShares, "TOTAL_STK_CNT 총발행주식수");
- Assert.IsFalse(row.IsElectronicSecurity!.Value, "ELTSC_YN=N → false (예탁증권)");
- }
- [TestMethod]
- public void Parse_EltscYn_Y_True_AndMissingNumerics_Null()
- {
- const string xml = """
- <vector result="1">
- <data vectorkey="0" type="Document"><result>
- <ISSUCO_CUSTNO value="80"/>
- <PVAL value="500.5"/>
- <VOTRNO value=""/>
- <ELTSC_YN value="Y"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroStkStatParser.Parse(SeibroXml.Parse(xml));
- var row = rows[0];
- Assert.AreEqual(500.5m, row.FaceValue, "소수 액면가 파싱");
- Assert.IsNull(row.VotingRights, "value=\"\" → null (0 과 구분)");
- Assert.IsNull(row.TotalIssuedShares, "element 생략 → null");
- Assert.IsNull(row.Isin);
- Assert.IsTrue(row.IsElectronicSecurity!.Value, "ELTSC_YN=Y → true (전자증권)");
- }
- }
|