206 lines
7.0 KiB
C#
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%");
|
|
}
|
|
}
|
|
}
|