using System; using System.IO; namespace YLErp.Modules.EodModule { [TestClass] public class DividendInfoEditGuardMessageTest { [TestMethod] public void AddDividendInfos_ReportsTheReferencingTradeNumberWhenAnExecutedActionIsEdited() { var source = ReadDividendServiceSource(); var addDividendInfos = ExtractMethod(source, "public bool AddDividendInfos", "public bool checkDividendInfoExecuteStatus"); var controllerSource = ReadExDividendInfoControllerSource(); var deleteDividend = ExtractMethod(controllerSource, "public JsonResult deleteDividend", "public JsonResult ImportDividendInfo"); Assert.IsTrue(addDividendInfos.Contains("不可修改,有交易【", StringComparison.Ordinal)); Assert.IsTrue(addDividendInfos.Contains("使用了该条除权除息数据", StringComparison.Ordinal)); Assert.IsTrue(deleteDividend.Contains("不可修改,有交易【", StringComparison.Ordinal)); Assert.IsTrue(deleteDividend.Contains("使用了该条除权除息数据", StringComparison.Ordinal)); } private static string ExtractMethod(string source, string startMarker, string endMarker) { var start = source.IndexOf(startMarker, StringComparison.Ordinal); Assert.IsTrue(start >= 0, $"Could not find method: {startMarker}"); var end = source.IndexOf(endMarker, start + startMarker.Length, StringComparison.Ordinal); Assert.IsTrue(end >= 0, $"Could not find method end: {endMarker}"); return source.Substring(start, end - start); } private static string ReadDividendServiceSource() { return ReadSource("YLErpDAL", "Modules", "TradeModule", "DealModule", "DividendService.cs"); } private static string ReadExDividendInfoControllerSource() { return ReadSource("YLErpWeb", "Controllers", "ex_dividend_infoController.cs"); } private static string ReadSource(params string[] relativePath) { var directory = new DirectoryInfo(AppContext.BaseDirectory); while (directory != null) { var path = Path.Combine(new[] { directory.FullName }.Concat(relativePath).ToArray()); if (File.Exists(path)) { return File.ReadAllText(path); } directory = directory.Parent; } Assert.Fail("Could not locate DividendService.cs from the test output directory."); return string.Empty; } } }