从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using YLErp.Modules.UnderlyingModule.ApiModudle;
|
||||
|
||||
namespace YLErp.Modules.UnderlyingModule
|
||||
{
|
||||
[TestClass]
|
||||
public class ApiModuleTest : UnitTestBase
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestGetUnderlyingList()
|
||||
{
|
||||
var datas = new ApiDataQueryService(CurUser).GetUnderlyingList();
|
||||
Assert.IsTrue(datas.Any());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
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%");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Data.Entity.Infrastructure;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using YLErp.BLL;
|
||||
using YLErp.DBModels;
|
||||
|
||||
namespace YLErp.Modules.MarginModule
|
||||
{
|
||||
[TestClass]
|
||||
public class MarginParamsImportServiceTest : YLUnitTestBase
|
||||
{
|
||||
[TestMethod("测试标的保证金参数导入")]
|
||||
public void TestImportUnderlying()
|
||||
{
|
||||
var un = GetUnderlyingManager();
|
||||
|
||||
AddClearSQL<UnderlyingHisData>("{0}='{1}'", nameof(UnderlyingHisData.UnderlyingCode), un.UnderlyingCode);
|
||||
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
WriteExcel(false, un.UnderlyingCode, ms);
|
||||
var result = new MarginParamsImportService(this).ImportUnderlying(ms);
|
||||
Assert.IsTrue(result.SuccessSum > 0, result.ResultMsg);
|
||||
Assert.IsTrue(un.MarginRate == 0.077);
|
||||
var datas = DbContext.UnderlyingHisData.Where(n => n.UnderlyingCode == un.UnderlyingCode).ToArray();
|
||||
Assert.IsTrue(datas.Length == 1 && datas[0].Value == 0.077);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod("测试品种保证金参数导入")]
|
||||
public void TestImportVariety()
|
||||
{
|
||||
var va = GetVariety();
|
||||
|
||||
AddClearSQL<VarietyHisData>("{0}='{1}'", nameof(VarietyHisData.VarietyId), va.id);
|
||||
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
WriteExcel(true, va.VarietyCode, ms);
|
||||
var result = new MarginParamsImportService(this).ImportVariety(ms);
|
||||
Assert.IsTrue(result.SuccessSum > 0, result.ResultMsg);
|
||||
Assert.IsTrue(va.Margin == 0.077);
|
||||
var datas = DbContext.VarietyHisData.Where(n => n.VarietyId == va.id).ToArray();
|
||||
Assert.IsTrue(datas.Length == 1 && datas[0].Value == 0.077);
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteExcel(bool isVariety, string code, Stream streamIn)
|
||||
{
|
||||
var codeColName = isVariety ? "品种代码" : "标的代码";
|
||||
|
||||
using (var wb = new ClosedXML.Excel.XLWorkbook())
|
||||
{
|
||||
var ws = wb.AddWorksheet("保证金比例");
|
||||
var cell = ws.FirstCell();
|
||||
foreach (var str in new[] { codeColName, "变动日期", "保证金比例" })
|
||||
{
|
||||
cell.SetValue(str);
|
||||
cell = cell.CellRight();
|
||||
}
|
||||
cell = ws.Row(2).FirstCell();
|
||||
foreach (var str in new[] { code, valuedateBLL.ValueDate.OtcFormatDate(), "7.7%" })
|
||||
{
|
||||
cell.SetValue(str);
|
||||
cell = cell.CellRight();
|
||||
}
|
||||
|
||||
ws = wb.AddWorksheet("Span波动率变动");
|
||||
cell = ws.FirstCell();
|
||||
foreach (var str in new[] { codeColName, "变动日期", "Span波动率变动" })
|
||||
{
|
||||
cell.SetValue(str);
|
||||
cell = cell.CellRight();
|
||||
}
|
||||
|
||||
|
||||
ws = wb.AddWorksheet("Span涨跌幅度");
|
||||
cell = ws.FirstCell();
|
||||
foreach (var str in new[] { codeColName, "变动日期", "Span涨跌幅度" })
|
||||
{
|
||||
cell.SetValue(str);
|
||||
cell = cell.CellRight();
|
||||
}
|
||||
|
||||
wb.SaveAs(streamIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user