using Infrastructure.StockData;
namespace Application.Tests;
/// SEIBro getBondOptionXrcInfo 파서 — 실샘플(1행) 필드 매핑 + 빈 날짜(XRC_BEGIN_DT="") null + 자연키 결측 스킵.
[TestClass]
public sealed class SeibroBondOptionXrcParserTests
{
[TestMethod]
public void Parse_SampleXml_MapsRedemptionRow()
{
var rows = SeibroBondOptionXrcParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getBondOptionXrcInfo.xml")));
Assert.AreEqual(1, rows.Count);
var row = rows[0];
Assert.AreEqual("KR6225693573", row.Isin);
Assert.AreEqual("제이티캐피탈제일차유동화전문 3-1(콜/변)", row.KorSecnNm);
Assert.AreEqual(new DateOnly(2018, 8, 24), row.ErlyRedDt);
Assert.IsNull(row.XrcBeginDt, "빈 value 는 null");
Assert.IsNull(row.XrcExpryDt);
Assert.AreEqual("9401", row.OptionTpcd, "CALL");
Assert.AreEqual(3.75m, row.ApliIrate);
Assert.AreEqual(2000000000m, row.ErlyRedamtVal);
Assert.AreEqual(117842465m, row.IntPayAmt);
Assert.AreEqual(3.08m, row.XrcRatio);
}
[TestMethod]
public void Parse_MissingErlyRedDt_SkipsRow()
{
const string xml = """
""";
var rows = SeibroBondOptionXrcParser.Parse(SeibroXml.Parse(xml));
Assert.AreEqual(0, rows.Count, "조기상환일 없으면 스킵");
}
}