| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- [TestClass]
- public sealed class SeibroStkListParserTests
- {
- [TestMethod]
- public void Parse_FromSampleXml_MapsCirclForms()
- {
- // SEIBro getStkListInfo 실응답 fixture (2018-12 유통형태변경) — 다수 행. 변경전/후 유통형태 코드 + 적용일.
- var rows = SeibroStkListParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStkListInfo.xml")));
- Assert.IsTrue(rows.Count >= 100, "표본 행 다수");
- var etf = rows.Single(c => c.Isin == "KR7314700006");
- Assert.AreEqual("314700", etf.ShotnIsin);
- Assert.AreEqual("211", etf.BfaltCirclForm, "변경전 예탁지정");
- Assert.AreEqual("110", etf.AfaltCirclForm, "변경후 유가");
- Assert.AreEqual(new DateOnly(2018, 12, 21), etf.ApliDt);
- // 신규 등록: 변경전 유통형태 빈값 → null
- var newlyListed = rows.Single(c => c.Isin == "KR7313150005");
- Assert.IsNull(newlyListed.BfaltCirclForm, "BFALT value=\"\" → null");
- Assert.AreEqual("241", newlyListed.AfaltCirclForm, "변경후 권리");
- }
- [TestMethod]
- public void Parse_SkipsRow_WhenApliDtMissing()
- {
- // 기대 행위: 적용일 없으면 건너뛴다
- const string xml = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result>
- <ISIN value="KR7000000001"/>
- <SHOTN_ISIN value="000001"/>
- <KOR_SECN_NM value="적용일없음"/>
- <AFALT_CIRCL_FORM value="211"/>
- </result></data>
- <data vectorkey="1" type="Document"><result>
- <ISSUCO_CUSTNO value="10"/>
- <ISIN value="KR7000000002"/>
- <SHOTN_ISIN value="000002"/>
- <KOR_SECN_NM value="정상"/>
- <BFALT_CIRCL_FORM value="211"/>
- <AFALT_CIRCL_FORM value="910"/>
- <APLI_DT value="20200315"/>
- </result></data>
- </vector>
- """;
- var rows = SeibroStkListParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count);
- Assert.AreEqual("KR7000000002", rows[0].Isin);
- Assert.AreEqual(10, rows[0].IssucoCustno);
- Assert.AreEqual(new DateOnly(2020, 3, 15), rows[0].ApliDt);
- }
- }
|