using Infrastructure.StockData; namespace Application.Tests; [TestClass] public sealed class SeibroStddtParserTests { [TestMethod] public void Parse_FromSampleXml_MapsFields_Samsung() { // SEIBro getStddtInfo 실응답 fixture (삼성전자) — 3행, 전부 정기총회(001) var rows = SeibroStddtParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getStddtInfo.xml"))); Assert.AreEqual(3, rows.Count); var first = rows.Single(c => c.RgtStdDt == new DateOnly(2016, 12, 31)); Assert.AreEqual(593, first.IssucoCustno); Assert.AreEqual("삼성전자", first.RepSecnNm); Assert.AreEqual("001", first.RgtRacd, "정기총회"); Assert.AreEqual("정기총회", first.RgtRacdNm); Assert.AreEqual("99", first.RgtRsnDetailSortCd); } [TestMethod] public void Parse_SkipsRows_MissingNaturalKey() { // 기대 행위: 자연키(회사번호/기준일/사유코드/세부유형) 중 하나라도 없으면 건너뛴다 const string xml = """ """; var rows = SeibroStddtParser.Parse(SeibroXml.Parse(xml)); Assert.AreEqual(1, rows.Count, "RGT_RACD 없는 행은 skip"); Assert.AreEqual("204", rows[0].RgtRacd, "상호변경 — Wave 3 트리거 코드"); } }