feat: complete legacy parity and modernize operator UI

This commit is contained in:
2026-07-22 12:34:46 +09:00
parent fc4007d676
commit 939c252d23
149 changed files with 26515 additions and 1736 deletions

View File

@@ -57,7 +57,7 @@ public sealed class LegacyWebContractTests
@"class=""[^""]*\bactive\b[^""]*""[^>]*data-tab-id=""overseas""[\s\S]*?<span class=""workspace-nav-label"">해외<\/span>[\s\S]*?<\/button>",
Markup);
Assert.Matches(
@"data-tab-id=""tradingHalt""[\s\S]*?<span class=""workspace-nav-label"">정지<\/span>[\s\S]*?<\/button>",
@"data-tab-id=""tradingHalt""[\s\S]*?<span class=""workspace-nav-label"">거래정지<\/span>[\s\S]*?<\/button>",
Markup);
}
@@ -124,10 +124,15 @@ public sealed class LegacyWebContractTests
var boundaryStart = App.IndexOf(
"function selectPlaylistBoundary", StringComparison.Ordinal);
var boundaryEnd = App.IndexOf(
"function clearDelayedClick", boundaryStart, StringComparison.Ordinal);
"function movePlaylistKeyboardSelection", boundaryStart, StringComparison.Ordinal);
var boundaryHelper = App[boundaryStart..boundaryEnd];
Assert.DoesNotContain(".focus(", boundaryHelper, StringComparison.Ordinal);
Assert.Contains("scrollIntoView", boundaryHelper, StringComparison.Ordinal);
var arrowEnd = App.IndexOf(
"function clearDelayedClick", boundaryEnd, StringComparison.Ordinal);
var arrowHelper = App[boundaryEnd..arrowEnd];
Assert.Contains("next.focus({ preventScroll: true })", arrowHelper,
StringComparison.Ordinal);
}
[Fact]
@@ -152,12 +157,15 @@ public sealed class LegacyWebContractTests
Assert.Contains("event.key === \"Delete\"", App, StringComparison.Ordinal);
Assert.Contains("row.isSelected", App, StringComparison.Ordinal);
Assert.Contains("row.isActive === true", App, StringComparison.Ordinal);
Assert.Contains("enabled.checked !== true", App, StringComparison.Ordinal);
Assert.Contains("enabled.setAttribute(\"aria-disabled\", playlistMutationLocked", App,
Assert.Contains("send(\"toggle-active-playlist-enabled\", {})", App,
StringComparison.Ordinal);
Assert.Contains("interactionDisabled = playlistMutationLocked", App,
Assert.Contains("enabled.setAttribute(\"aria-disabled\", playlistStructureMutationLocked", App,
StringComparison.Ordinal);
Assert.DoesNotContain("send(\"toggle-active-playlist-enabled\"", App,
Assert.Contains("interactionDisabled = playlistStructureMutationLocked", App,
StringComparison.Ordinal);
Assert.Contains("playlistEnableAll.disabled = playlistProgramEnableMutationLocked", App,
StringComparison.Ordinal);
Assert.Contains("playlistDeleteSelected.disabled = playlistDeleteSelectedLocked", App,
StringComparison.Ordinal);
Assert.Contains("deferSelectedRowPlainClickForDrag", App, StringComparison.Ordinal);
Assert.Contains("deferredPlaylistPlainSelectionRowId", App, StringComparison.Ordinal);
@@ -204,7 +212,7 @@ public sealed class LegacyWebContractTests
StringComparison.Ordinal);
Assert.Contains(".playlist-data-row .playlist-row-header", Styles,
StringComparison.Ordinal);
Assert.Contains("if (!playlistMutationLocked) send(\"delete-selected-playlist-rows\"", App,
Assert.Contains("if (!playlistDeleteSelectedLocked) send(\"delete-selected-playlist-rows\"", App,
StringComparison.Ordinal);
var deleteBranchStart = App.LastIndexOf(
"if (event.key === \"Delete\"",
@@ -281,7 +289,7 @@ public sealed class LegacyWebContractTests
}
[Fact]
public void FixedCatalogUsesOpaqueCSharpActionAndSectionIntents()
public void FixedCatalogUsesOpaqueLeafAndParentBatchIntents()
{
Assert.Contains("state.fixedCatalog", App, StringComparison.Ordinal);
Assert.Contains("dataset.actionId", App, StringComparison.Ordinal);
@@ -428,7 +436,7 @@ public sealed class LegacyWebContractTests
"beginNamedPlaylistSelection(definition.dataset.namedPlaylistDefinitionId)", App,
StringComparison.Ordinal);
Assert.Contains(
"dbLoadButton.disabled = operatorMutationLocked || busy || !named",
"dbLoadButton.disabled = playlistStructureMutationLocked || busy || !named",
App,
StringComparison.Ordinal);
Assert.Contains("requestId: requestId", App, StringComparison.Ordinal);