71 lines
2.7 KiB
C#
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 = "收益互换" };
|
|
}
|
|
}
|
|
}
|