Files
zszq-trs/UnitTestProject/Modules/TradeModule/DocGenerateModule/GuolianContractNoGeneratorTest.cs
T
tengyufan d1f697c524 #EQD-6604 国联民生-确认书编码生成环节移到簿记(支持手工录入)
feat: 国联民生收益互换簿记后按确认书规则生成交易编
- 补充单测文件
2026-07-29 17:14:40 +08:00

71 lines
2.7 KiB
C#

using YLErp.Configuration;
using YLErp.DBModels;
using YLErp.Modules.TradeModule.DocGenerateModule;
namespace YLErp.UnitTestProject.Modules.TradeModule.DocGenerateModule
{
[TestClass]
public class GuolianContractNoGeneratorTest
{
[TestMethod]
public void IsGuolianSwapTrade_OnlyMatchesGuolianSwap()
{
var swapTrade = CreateSwapTrade();
Assert.IsTrue(GuolianContractNoGenerator.IsGuolianSwapTrade(swapTrade, CompanyEnum.国联));
Assert.IsFalse(GuolianContractNoGenerator.IsGuolianSwapTrade(
new trade { TradeType = "香草期权" }, CompanyEnum.国联));
Assert.IsFalse(GuolianContractNoGenerator.IsGuolianSwapTrade(swapTrade, CompanyEnum.国泰君安));
}
[TestMethod]
public void ShouldGenerateTradeNumberAfterSave_OnlyGeneratesForBlankTradeNumber()
{
var blankTrade = CreateSwapTrade();
var manualTrade = CreateSwapTrade();
manualTrade.TradeNumber = "MANUAL-001";
Assert.IsTrue(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
blankTrade, CompanyEnum.国联));
Assert.IsFalse(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
manualTrade, CompanyEnum.国联));
Assert.IsFalse(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
blankTrade, CompanyEnum.国泰君安));
}
[TestMethod]
public void BuildTradeNumber_ClientTrade_UsesNumericSequenceAndSanitizesUnderlyingCode()
{
var trade = CreateSwapTrade();
trade.OpponentRole = "甲方";
trade.TradeDate = new DateTime(2026, 7, 24);
trade.UnderlyingCode = "250210.IB";
var number = GuolianContractNoGenerator.BuildTradeNumber(trade, "IS", 3);
Assert.AreEqual("GLMS-IS-20260724-FICC-03-250210IB", number);
}
[DataTestMethod]
[DataRow(1, "A")]
[DataRow(26, "Z")]
[DataRow(27, "AA")]
public void BuildTradeNumber_NonClientTrade_UsesLetterSequence(int sequenceNo, string sequenceCode)
{
var trade = CreateSwapTrade();
trade.OpponentRole = "乙方";
trade.TradeDate = new DateTime(2026, 7, 24);
trade.UnderlyingCode = "180205.IB";
var number = GuolianContractNoGenerator.BuildTradeNumber(trade, "glmscounter", sequenceNo);
Assert.AreEqual($"GLMS-glmscounter-20260724-FICC-{sequenceCode}-180205IB", number);
}
private static trade CreateSwapTrade()
{
return new trade { TradeType = "收益互换" };
}
}
}