feat: advance legacy UI behavior parity

This commit is contained in:
2026-07-18 10:18:29 +09:00
parent d7ec571343
commit 1302b1b92f
71 changed files with 11244 additions and 1153 deletions

View File

@@ -33,21 +33,34 @@ public sealed class LegacyRowDoubleClickParityTests
}
[Fact]
public void Theme_double_click_is_atomic_while_single_click_remains_delayed_selection()
public void Theme_double_click_is_atomic_while_single_click_selects_immediately()
{
var doubleClick = Extract(
"categoryTree.addEventListener(\"dblclick\"",
"categoryTree.addEventListener(\"click\"");
var click = Extract(
var clickDelegate = Extract(
"categoryTree.addEventListener(\"click\"",
"categoryTree.addEventListener(\"change\"");
var themeClickStart = clickDelegate.IndexOf(
"const themeResult = event.target.closest(\"button[data-theme-result-id]\");",
StringComparison.Ordinal);
var themeClickEnd = clickDelegate.IndexOf(
"if (event.target.closest(\"button[data-theme-search]\"))",
themeClickStart,
StringComparison.Ordinal);
Assert.True(themeClickStart >= 0 && themeClickEnd > themeClickStart);
var themeClick = clickDelegate[themeClickStart..themeClickEnd];
Assert.Contains("send(\"activate-theme-result\"", doubleClick,
StringComparison.Ordinal);
Assert.DoesNotContain("send(\"select-theme\"", doubleClick,
StringComparison.Ordinal);
Assert.Contains("window.setTimeout", click, StringComparison.Ordinal);
Assert.Contains("send(\"select-theme\"", click, StringComparison.Ordinal);
Assert.Contains(
"send(\"select-theme\", { resultId: themeResult.dataset.themeResultId });",
themeClick,
StringComparison.Ordinal);
Assert.DoesNotContain("window.setTimeout", themeClick, StringComparison.Ordinal);
Assert.DoesNotContain("themeResultClickTimer", App, StringComparison.Ordinal);
}
[Fact]