91 lines
3.6 KiB
C#
91 lines
3.6 KiB
C#
namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
|
|
|
|
public sealed class LegacyRuntimeStockCutMenuNativeContractTests
|
|
{
|
|
private static readonly string RepositoryRoot = FindRepositoryRoot();
|
|
private static readonly string MainWindow = File.ReadAllText(Path.Combine(
|
|
RepositoryRoot,
|
|
"src",
|
|
"MBN_STOCK_WEBVIEW.LegacyParityApp",
|
|
"MainWindow.xaml.cs"));
|
|
|
|
[Fact]
|
|
public void MainWindowUsesExternalThenPackagedCandidatesAndInjectsResolvedRows()
|
|
{
|
|
Assert.Contains(
|
|
"Environment.SpecialFolder.LocalApplicationData",
|
|
MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("\"MBN_STOCK_WEBVIEW\"", MainWindow, StringComparison.Ordinal);
|
|
Assert.Contains("\"Res\"", MainWindow, StringComparison.Ordinal);
|
|
Assert.Contains("\"종목.ini\"", MainWindow, StringComparison.Ordinal);
|
|
Assert.Contains(
|
|
"LegacyRuntimeStockCutMenuLoader.ResolveFromCandidates(",
|
|
MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("runtimeCutMenuOverridePath", MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.Contains("AppContext.BaseDirectory", MainWindow, StringComparison.Ordinal);
|
|
Assert.Contains("cutRows: cutMenuComposition.Rows", MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain("Environment.CurrentDirectory", MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain("Directory.GetCurrentDirectory", MainWindow,
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain("MBN_STOCK_N", MainWindow, StringComparison.OrdinalIgnoreCase);
|
|
Assert.DoesNotContain("bin\\Debug\\Res\\종목.ini", MainWindow,
|
|
StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
[Fact]
|
|
public void DatabaseInitializationErrorWinsOverCombinedRuntimeCatalogWarnings()
|
|
{
|
|
var errorBranch = MainWindow.IndexOf(
|
|
"if (initializationError is not null)",
|
|
StringComparison.Ordinal);
|
|
var warningBranch = MainWindow.IndexOf(
|
|
"cutMenuComposition.WarningMessage,",
|
|
errorBranch,
|
|
StringComparison.Ordinal);
|
|
var runtimeUiWarning = MainWindow.IndexOf(
|
|
"runtimeUiCatalogs.WarningMessage",
|
|
warningBranch,
|
|
StringComparison.Ordinal);
|
|
var errorReport = MainWindow.IndexOf(
|
|
"_controller.ReportError(initializationError);",
|
|
errorBranch,
|
|
StringComparison.Ordinal);
|
|
var warningReport = MainWindow.IndexOf(
|
|
"_controller.ReportWarning(string.Join(\" \", catalogWarnings));",
|
|
warningBranch,
|
|
StringComparison.Ordinal);
|
|
|
|
Assert.True(errorBranch >= 0);
|
|
Assert.True(errorReport > errorBranch);
|
|
Assert.True(warningBranch > errorReport);
|
|
Assert.True(runtimeUiWarning > warningBranch);
|
|
Assert.True(warningReport > warningBranch);
|
|
Assert.Equal(
|
|
warningReport,
|
|
MainWindow.LastIndexOf(
|
|
"_controller.ReportWarning(string.Join(\" \", catalogWarnings));",
|
|
StringComparison.Ordinal));
|
|
}
|
|
|
|
private static string FindRepositoryRoot()
|
|
{
|
|
var current = new DirectoryInfo(AppContext.BaseDirectory);
|
|
while (current is not null)
|
|
{
|
|
if (File.Exists(Path.Combine(current.FullName, "MBN_STOCK_WEBVIEW.sln")))
|
|
{
|
|
return current.FullName;
|
|
}
|
|
|
|
current = current.Parent;
|
|
}
|
|
|
|
throw new DirectoryNotFoundException("Repository root was not found.");
|
|
}
|
|
}
|