91 lines
3.6 KiB
C#
91 lines
3.6 KiB
C#
namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
|
|
|
|
public sealed class LegacyOverseasParityWebTests
|
|
{
|
|
private static readonly string RepositoryRoot = FindRepositoryRoot();
|
|
private static readonly string WebRoot = Path.Combine(
|
|
RepositoryRoot,
|
|
"src",
|
|
"MBN_STOCK_WEBVIEW.LegacyParityApp",
|
|
"Web");
|
|
private static readonly string App = File.ReadAllText(Path.Combine(WebRoot, "app.js"));
|
|
private static readonly string Markup = File.ReadAllText(Path.Combine(WebRoot, "index.html"));
|
|
private static readonly string Styles = File.ReadAllText(Path.Combine(WebRoot, "styles.css"));
|
|
|
|
[Fact]
|
|
public void OverseasTabRendersFixedIndustryStockAndActionWorkspaces()
|
|
{
|
|
Assert.Contains("data-tab-id=\"overseasStocks\">해외종목</button>", Markup);
|
|
Assert.Contains("function renderOverseas(state)", App, StringComparison.Ordinal);
|
|
Assert.Contains("overseas-fixed-list", App, StringComparison.Ordinal);
|
|
Assert.Contains("미국 해외업종", App, StringComparison.Ordinal);
|
|
Assert.Contains("미국·대만 해외종목", App, StringComparison.Ordinal);
|
|
Assert.Contains("overseas-action-panel", App, StringComparison.Ordinal);
|
|
Assert.Contains("renderOverseas(state);", App, StringComparison.Ordinal);
|
|
|
|
foreach (var selector in new[]
|
|
{
|
|
".overseas-workspace",
|
|
".overseas-fixed-list",
|
|
".overseas-searches",
|
|
".overseas-results",
|
|
".overseas-action-panel"
|
|
})
|
|
{
|
|
Assert.Contains(selector, Styles, StringComparison.Ordinal);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void OverseasEventsSendOnlyQueriesAndOpaqueIds()
|
|
{
|
|
foreach (var intent in new[]
|
|
{
|
|
"select-overseas-fixed-index",
|
|
"search-overseas-industries",
|
|
"search-overseas-stocks",
|
|
"select-overseas-industry",
|
|
"select-overseas-stock",
|
|
"activate-overseas-action"
|
|
})
|
|
{
|
|
Assert.Contains($"\"{intent}\"", App, StringComparison.Ordinal);
|
|
}
|
|
|
|
Assert.Contains("data-overseas-action-id", App, StringComparison.Ordinal);
|
|
Assert.Contains("event.key === \"Enter\"", App, StringComparison.Ordinal);
|
|
var clickStart = App.IndexOf(
|
|
"categoryTree.addEventListener(\"click\"",
|
|
StringComparison.Ordinal);
|
|
var changeStart = App.IndexOf(
|
|
"categoryTree.addEventListener(\"change\"",
|
|
clickStart,
|
|
StringComparison.Ordinal);
|
|
Assert.True(clickStart >= 0 && changeStart > clickStart);
|
|
Assert.Contains(
|
|
"button[data-overseas-action-id]",
|
|
App[clickStart..changeStart],
|
|
StringComparison.Ordinal);
|
|
Assert.DoesNotContain("NAS@IXIC", App, StringComparison.Ordinal);
|
|
Assert.DoesNotContain("FOREIGN_INDEX", App, StringComparison.Ordinal);
|
|
Assert.DoesNotContain("index-candle-20d", App, StringComparison.Ordinal);
|
|
}
|
|
|
|
private static string FindRepositoryRoot()
|
|
{
|
|
var current = new DirectoryInfo(AppContext.BaseDirectory);
|
|
while (current is not null)
|
|
{
|
|
if (Directory.Exists(Path.Combine(current.FullName, "src")) &&
|
|
Directory.Exists(Path.Combine(current.FullName, "tests")))
|
|
{
|
|
return current.FullName;
|
|
}
|
|
|
|
current = current.Parent;
|
|
}
|
|
|
|
throw new DirectoryNotFoundException("Repository root was not found.");
|
|
}
|
|
}
|