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("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("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%"); } } }