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

@@ -50,6 +50,51 @@ public sealed class LegacyRowDoubleClickBridgeTests
out _));
}
[Theory]
[InlineData(true)]
[InlineData(false)]
public void Named_playlist_save_carries_only_the_success_dialog_choice(bool showSavedAlert)
{
var json = JsonSerializer.Serialize(new
{
type = "save-current-named-playlist-to",
payload = new
{
definitionId = "named-definition-AAAAAAAAAAAB",
showSavedAlert
}
});
Assert.True(LegacyBridgeProtocol.TryParseIntent(json, out var parsed, out _));
var save = Assert.IsType<LegacySaveCurrentNamedPlaylistToIntent>(parsed);
Assert.Equal(showSavedAlert, save.ShowSavedAlert);
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"save-current-named-playlist-to\",\"payload\":{" +
"\"definitionId\":\"named-definition-AAAAAAAAAAAB\"," +
"\"showSavedAlert\":\"yes\"}}",
out _,
out _));
}
[Fact]
public void Named_playlist_load_rejects_save_dialog_metadata()
{
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"load-named-playlist-by-id\",\"payload\":{" +
"\"definitionId\":\"named-definition-AAAAAAAAAAEF\"}}",
out var parsed,
out _));
Assert.IsType<LegacyLoadNamedPlaylistByIdIntent>(parsed);
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"load-named-playlist-by-id\",\"payload\":{" +
"\"definitionId\":\"named-definition-AAAAAAAAAAEF\"," +
"\"showSavedAlert\":false}}",
out _,
out _));
}
[Fact]
public void Projection_exposes_only_closed_command_receipt_and_opaque_target()
{