Files
zszq-trs/YLErpUnitTest/Modules/UnderlyingModule/HisDataServiceTest.cs
T
2024-05-09 14:06:26 +08:00

206 lines
7.0 KiB
C#

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Linq;
using YLErp.BLL;
using YLErp.DBModels;
using YLErp.Models;
namespace YLErp.Modules.UnderlyingModule
{
[TestClass]
public class HisDataServiceTest : YLUnitTestBase
{
[TestMethod("测试历史数据升级(标的品种)")]
public void TestVarietyUpdate()
{
var service = new VarietyDalService(OptUser);
var db = DbContextFactory.GetYLDbContext();
var va = db.variety.AsNoTracking().FirstOrDefault(n => n.VarietyCode == "LU");
va.id = 0;
va.VarietyCode = "LUX";
va.UpLimit = string.Empty;
va = service.SaveData(va);
var date = va.Margin.HasValue ? valuedateBLL.ValueDate : new DateTime(2000, 1, 1);
var dvalue = 0.033;
va.Margin = dvalue;
va.VolatilityRate = "3.3%";
va.UpLimit = "3.3%";
var va2 = service.SaveData(va);
Assert.AreEqual(va2.Margin, dvalue);
var tf = db.VarietyHisData.Any(n => n.VarietyId == va.id && n.ValueDate == date
&& n.ValueType == nameof(MarginParamModel.MarginRate) && n.Value == dvalue);
Assert.IsTrue(tf);
}
[TestMethod("测试历史数据升级(标的资产)")]
public void TestUnderlyingUpdate()
{
var service = new UnderlyingDalService(OptUser);
var db = DbContextFactory.GetYLDbContext();
var va = db.underlying_manager.AsNoTracking().FirstOrDefault(n => n.UnderlyingCode == "HC2106");
va.id = 0;
va.UnderlyingCode = "HCC2106";
va = service.SaveUnderlyingData(va);
var date = va.MarginRate.HasValue ? valuedateBLL.ValueDate : new DateTime(2000, 1, 1);
var dvalue = 0.033;
va.MarginRate = dvalue;
va.VolatilityRate = "3.3%";
va.UpDownLimit = "3.3%";
var va2 = service.SaveUnderlyingData(va);
Assert.AreEqual(va2.MarginRate, dvalue);
Assert.AreEqual(va2.VolatilityRate, 0.033);
var tf = db.UnderlyingHisData.Any(n => n.UnderlyingCode == va.UnderlyingCode && n.ValueDate == date
&& n.ValueType == nameof(MarginParamModel.MarginRate) && n.Value == dvalue);
Assert.IsTrue(tf);
}
[TestMethod("测试标的历史数据回写")]
public void TestUnderlyingBackHisDataToMainTable()
{
var un = GetUnderlyingManager();
var date = valuedateBLL.ValueDate.AddDays(-2);
AddClearSQL<UnderlyingHisData>("UnderlyingCode='{0}'", un.UnderlyingCode);
var service = new UnderlyingHisDataService(OptUser);
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = 0.0335,
ValueDate = date,
ValueFlag = "F",
ValueType = nameof(MarginParamModel.MarginRate)
});
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = 0.0355,
ValueDate = date.AddDays(1),
ValueFlag = "F",
ValueType = nameof(MarginParamModel.MarginRate)
});
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = null,
ValueDate = date.AddDays(1),
ValueFlag = "F",
ValueType = nameof(MarginParamModel.MarginRate)
});
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = 0.0335,
ValueDate = date,
ValueFlag = "F",
ValueType = nameof(MarginParamModel.VolatilityRate)
});
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = 33.555,
ValueDate = date,
ValueFlag = "F",
ValueType = nameof(MarginParamModel.UpDownLimit)
});
service.AddOrUpdateHisData(new UnderlyingHisDataAddOrUpdateRequest
{
UnderlyingCode = un.UnderlyingCode,
Value = null,
ValueDate = date,
ValueFlag = "F",
ValueType = nameof(MarginParamModel.UpDownLimit)
});
var changes = service.BackHisDataToMainTable();
Assert.IsTrue(changes == 3);
var un2 = DbContextFactory.GetYLDbContext().underlying_manager.FirstOrDefault(n => n.UnderlyingCode == un.UnderlyingCode);
//Assert.IsTrue(un2.MarginRate == 0.0355);
Assert.IsTrue(un2.MarginRate == null);
Assert.IsTrue(un2.VolatilityRate == "3.35%");
Assert.IsTrue(string.IsNullOrEmpty(un2.UpDownLimit));//"33.555"
}
[TestMethod("测试品种历史数据回写")]
public void TestVarietyBackHisDataToMainTable()
{
var va = GetVariety();
var date = valuedateBLL.ValueDate.AddDays(-2);
AddClearSQL<VarietyHisData>("VarietyId='{0}'", va.id);
var service = new VarietyHisDataService(OptUser);
service.AddOrUpdateHisData(new VarietyHisDataAddOrUpdateRequest
{
VarietyId = va.id,
Value = 0.0335,
ValueDate = date,
ValueType = nameof(MarginParamModel.MarginRate)
});
service.AddOrUpdateHisData(new VarietyHisDataAddOrUpdateRequest
{
VarietyId = va.id,
Value = 0.0355,
ValueDate = date.AddDays(1),
ValueType = nameof(MarginParamModel.MarginRate)
});
service.AddOrUpdateHisData(new VarietyHisDataAddOrUpdateRequest
{
VarietyId = va.id,
Value = 0.0335,
ValueDate = date,
ValueType = nameof(MarginParamModel.VolatilityRate)
});
service.AddOrUpdateHisData(new VarietyHisDataAddOrUpdateRequest
{
VarietyId = va.id,
Value = 0.05566,
ValueDate = date,
ValueType = nameof(MarginParamModel.UpDownLimit)
});
var changes = service.BackHisDataToMainTable();
Assert.IsTrue(changes == 3);
var va2 = DbContextFactory.GetYLDbContext().variety.FirstOrDefault(n => n.id == va.id);
Assert.IsTrue(va2.Margin == 0.0355);
Assert.IsTrue(va2.VolatilityRate == "3.35%");
Assert.IsTrue(va2.UpLimit == "5.566%");
Assert.IsTrue(va2.DownLimit == "5.566%");
}
}
}