Files
MBN_STOCK_WEBVIEW/tests/MBN_STOCK_WEBVIEW.LegacyWeb.Tests/LegacyComparisonImportWebTests.cs

61 lines
2.8 KiB
C#

namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
public sealed class LegacyComparisonImportWebTests
{
private static readonly string RepositoryRoot = FindRepositoryRoot();
private static readonly string App = Read("src", "MBN_STOCK_WEBVIEW.LegacyParityApp", "Web", "app.js");
private static readonly string Styles = Read("src", "MBN_STOCK_WEBVIEW.LegacyParityApp", "Web", "styles.css");
private static readonly string MainWindow = Read("src", "MBN_STOCK_WEBVIEW.LegacyParityApp", "MainWindow.xaml.cs");
private static readonly string Bridge = Read("src", "MBN_STOCK_WEBVIEW.LegacyBridge", "LegacyBridgeProtocol.cs");
[Fact]
public void Comparison_workspace_exposes_explicit_fixed_source_merge_and_result()
{
Assert.Contains("importLegacy.textContent = \"원본 비교쌍 가져오기\"", App,
StringComparison.Ordinal);
Assert.Contains("importLegacy.dataset.comparisonImport = \"true\"", App,
StringComparison.Ordinal);
Assert.Contains("send(\"import-legacy-comparison-pairs\", {})", App,
StringComparison.Ordinal);
Assert.Contains("comparison.lastImport.sourceRowCount", App,
StringComparison.Ordinal);
Assert.Contains("comparison.lastImport.addedPairCount", App,
StringComparison.Ordinal);
Assert.Contains(".comparison-import-status", Styles, StringComparison.Ordinal);
Assert.DoesNotContain("comparisonImportPath", App, StringComparison.Ordinal);
}
[Fact]
public void Native_composition_owns_the_trusted_source_and_database_resolver()
{
Assert.Contains("TrustedLegacyComparisonFileSource.CreateDefault()", MainWindow,
StringComparison.Ordinal);
Assert.Contains("new LegacyComparisonPairImportService(", MainWindow,
StringComparison.Ordinal);
Assert.Contains("comparisonImporter)", MainWindow, StringComparison.Ordinal);
Assert.Contains("\"import-legacy-comparison-pairs\" => ParseComparisonImport(payload)",
Bridge, StringComparison.Ordinal);
Assert.Contains("HasOnlyProperties(payload) ? new LegacyImportComparisonPairsIntent()",
Bridge, StringComparison.Ordinal);
}
private static string Read(params string[] segments) =>
File.ReadAllText(Path.Combine([RepositoryRoot, .. segments]));
private static string FindRepositoryRoot()
{
var directory = new DirectoryInfo(AppContext.BaseDirectory);
while (directory is not null)
{
if (File.Exists(Path.Combine(directory.FullName, "MBN_STOCK_WEBVIEW.sln")))
{
return directory.FullName;
}
directory = directory.Parent;
}
throw new DirectoryNotFoundException("Repository root was not found.");
}
}