feat: complete legacy UI and playout parity migration
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests;
|
||||
|
||||
public sealed class LegacyGraphClickParityWebTests
|
||||
{
|
||||
private static readonly string App = File.ReadAllText(Path.Combine(
|
||||
FindRepositoryRoot(),
|
||||
"src",
|
||||
"MBN_STOCK_WEBVIEW.LegacyParityApp",
|
||||
"Web",
|
||||
"app.js"));
|
||||
|
||||
[Fact]
|
||||
public void Uc3_targets_select_on_single_click_and_fill_slots_only_on_double_click()
|
||||
{
|
||||
var doubleStart = App.IndexOf(
|
||||
"categoryTree.addEventListener(\"dblclick\"",
|
||||
StringComparison.Ordinal);
|
||||
var clickStart = App.IndexOf(
|
||||
"categoryTree.addEventListener(\"click\"",
|
||||
doubleStart + 1,
|
||||
StringComparison.Ordinal);
|
||||
var changeStart = App.IndexOf(
|
||||
"categoryTree.addEventListener(\"change\"",
|
||||
clickStart + 1,
|
||||
StringComparison.Ordinal);
|
||||
Assert.True(doubleStart >= 0 && clickStart > doubleStart && changeStart > clickStart);
|
||||
var doubleClick = App[doubleStart..clickStart];
|
||||
var singleClick = App[clickStart..changeStart];
|
||||
|
||||
foreach (var intent in new[]
|
||||
{
|
||||
"choose-comparison-domestic",
|
||||
"choose-comparison-world",
|
||||
"choose-comparison-fixed"
|
||||
})
|
||||
{
|
||||
Assert.Contains($"\"{intent}\"", doubleClick, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain($"\"{intent}\"", singleClick, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
foreach (var intent in new[]
|
||||
{
|
||||
"select-comparison-domestic",
|
||||
"select-comparison-world",
|
||||
"select-comparison-fixed"
|
||||
})
|
||||
{
|
||||
Assert.Contains($"\"{intent}\"", singleClick, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain($"\"{intent}\"", doubleClick, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
Assert.Contains("comparisonTargetClickTimer", singleClick, StringComparison.Ordinal);
|
||||
Assert.Contains("}, 250);", singleClick, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Vi_result_single_click_selects_and_double_click_adds_without_duplicate_intent()
|
||||
{
|
||||
var start = App.IndexOf("function renderManualLists", StringComparison.Ordinal);
|
||||
var end = App.IndexOf("function openNamedPlaylist", start, StringComparison.Ordinal);
|
||||
Assert.True(start >= 0 && end > start);
|
||||
var manual = App[start..end];
|
||||
|
||||
Assert.Matches(
|
||||
new Regex(
|
||||
"addEventListener\\(\"click\"[\\s\\S]*?setTimeout[\\s\\S]*?send\\(\"select-manual-vi-result\"",
|
||||
RegexOptions.CultureInvariant),
|
||||
manual);
|
||||
Assert.Matches(
|
||||
new Regex(
|
||||
"addEventListener\\(\"dblclick\"[\\s\\S]*?clearDelayedClick\\(manualViResultClickTimer\\)[\\s\\S]*?send\\(\"add-manual-vi-result\"",
|
||||
RegexOptions.CultureInvariant),
|
||||
manual);
|
||||
}
|
||||
|
||||
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.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user