| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroUnlistCirclParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsFields_UsesSecnKacdNm()
- {
- // SEIBro getUnlistCirclInfo 실응답 fixture — 1행. ⚠️ 종목종류명은 SECN_KACD_NM (스펙 SECN_KACA_NM 오기).
- var rows = SeibroUnlistCirclParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getUnlistCirclInfo.xml")));
- Assert.AreEqual(1, rows.Count);
- var row = rows[0];
- Assert.AreEqual("KR7064400005", row.Isin);
- Assert.AreEqual("064400", row.ShotnIsin);
- Assert.AreEqual("엘지씨엔에스", row.RepSecnNm);
- Assert.AreEqual("보통주", row.SecnKacdNm, "SECN_KACD_NM (스펙 오기 SECN_KACA_NM 아님)");
- Assert.AreEqual(0L, row.GenDepoQty, "예탁수량 0");
- Assert.AreEqual(0L, row.RthingReturnStkqty);
- Assert.AreEqual(1400L, row.AcnttrQty, "계좌대체수량");
- Assert.IsFalse(row.IsElectronicSecurity!.Value, "ELTSC_YN=N → false");
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenIsinMissing()
- {
- // 기대 행위: ISIN 또는 대표명 없으면 건너뛴다
- const string xml = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result>
- <REP_SECN_NM value="ISIN없음"/>
- <GEN_DEPO_QTY value="100"/>
- </result></data>
- <data vectorkey="1" type="Document"><result>
- <ISIN value="KR7099999999"/>
- <SHOTN_ISIN value="099999"/>
- <REP_SECN_NM value="정상"/>
- <SECN_KACD_NM value="우선주"/>
- <GEN_DEPO_QTY value="5000"/>
- <ELTSC_YN value="Y"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroUnlistCirclParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count);
- Assert.AreEqual("KR7099999999", rows[0].Isin);
- Assert.AreEqual("우선주", rows[0].SecnKacdNm);
- Assert.IsTrue(rows[0].IsElectronicSecurity!.Value);
- }
- }
|