using Infrastructure.StockData;
namespace Application.Tests;
/// SEIBro getRedIsinInfo 파서 — 대문자 <RESULT> 래퍼. 상환일별 상환종목·행사구분·수량 매핑 + 자연키(ISIN/행사구분) 결측 스킵.
[TestClass]
public sealed class SeibroRedIsinParserTests
{
[TestMethod]
public void Parse_SampleXml_MapsRedemptionRows()
{
var rows = SeibroRedIsinParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getRedIsinInfo.xml")));
Assert.AreEqual(12, rows.Count, "상환종목 12건");
var first = rows[0];
Assert.AreEqual("KR6552327845", first.Isin);
Assert.AreEqual("3", first.DerisecExerTpcd, "조기상환");
Assert.AreEqual(132000000m, first.RedQty);
var large = rows.Single(c => c.Isin == "KR6733302857");
Assert.AreEqual(19850000000m, large.RedQty, "대형 상환수량");
}
[TestMethod]
public void Parse_MissingKeys_SkipsRow()
{
const string xml = """
""";
var rows = SeibroRedIsinParser.Parse(SeibroXml.Parse(xml));
Assert.AreEqual(0, rows.Count, "ISIN 없음·행사구분 없음 둘 다 스킵");
}
}