feat: restore legacy drag events and Tornado launch integration
This commit is contained in:
@@ -213,6 +213,30 @@ public sealed class LegacyOperatorControllerTests
|
||||
Assert.Single(swapped.Tabs, tab => tab.IsActive).Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task TabHoverSwapUsesExpectedPositionsSoDuplicateDeliveryCannotSwapBack()
|
||||
{
|
||||
var controller = new LegacyOperatorController(Lookup());
|
||||
|
||||
var first = await controller.SwapTabsAtExpectedPositionsAsync(
|
||||
LegacyOperatorTabId.Theme,
|
||||
LegacyOperatorTabId.Exchange,
|
||||
expectedSourceIndex: 6,
|
||||
expectedTargetIndex: 1);
|
||||
Assert.Equal(LegacyOperatorTabId.Theme, first.Tabs![1].Id);
|
||||
Assert.Equal(LegacyOperatorTabId.Exchange, first.Tabs[6].Id);
|
||||
|
||||
var revision = first.Revision;
|
||||
var duplicate = await controller.SwapTabsAtExpectedPositionsAsync(
|
||||
LegacyOperatorTabId.Theme,
|
||||
LegacyOperatorTabId.Exchange,
|
||||
expectedSourceIndex: 6,
|
||||
expectedTargetIndex: 1);
|
||||
Assert.Equal(revision, duplicate.Revision);
|
||||
Assert.Equal(LegacyOperatorTabId.Theme, duplicate.Tabs![1].Id);
|
||||
Assert.Equal(LegacyOperatorTabId.Exchange, duplicate.Tabs[6].Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PlaylistKeyboardCommandsUseActiveRowAndBoundaries()
|
||||
{
|
||||
@@ -626,6 +650,65 @@ public sealed class LegacyOperatorControllerTests
|
||||
after.Playlist.Select(row => row.RowId));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PlaylistDragMovesNoncontiguousSelectionAsOneOrderedBlockAndIsIdempotent()
|
||||
{
|
||||
var controller = await ControllerWithPlaylistAsync(0, 1, 2, 4, 5, 6);
|
||||
var initial = controller.Current.Playlist.ToArray();
|
||||
|
||||
controller.SelectPlaylistRow(initial[1].RowId, control: false, shift: false);
|
||||
controller.SelectPlaylistRow(initial[3].RowId, control: true, shift: false);
|
||||
var moved = controller.ReorderPlaylistRows(
|
||||
initial[3].RowId,
|
||||
initial[5].RowId,
|
||||
LegacyDragDropPosition.Before);
|
||||
|
||||
Assert.Equal(
|
||||
[
|
||||
initial[0].RowId,
|
||||
initial[2].RowId,
|
||||
initial[4].RowId,
|
||||
initial[1].RowId,
|
||||
initial[3].RowId,
|
||||
initial[5].RowId
|
||||
],
|
||||
moved.Playlist.Select(row => row.RowId));
|
||||
Assert.Equal(
|
||||
[initial[1].RowId, initial[3].RowId],
|
||||
moved.Playlist.Where(row => row.IsSelected).Select(row => row.RowId));
|
||||
|
||||
var revision = moved.Revision;
|
||||
var duplicate = controller.ReorderPlaylistRows(
|
||||
initial[3].RowId,
|
||||
initial[5].RowId,
|
||||
LegacyDragDropPosition.Before);
|
||||
Assert.Equal(revision, duplicate.Revision);
|
||||
Assert.Equal(
|
||||
moved.Playlist.Select(row => row.RowId),
|
||||
duplicate.Playlist.Select(row => row.RowId));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PlaylistDragFromUnselectedRowMovesOnlyThatRowAndSelectsIt()
|
||||
{
|
||||
var controller = await ControllerWithPlaylistAsync(0, 1, 2, 4);
|
||||
var initial = controller.Current.Playlist.ToArray();
|
||||
controller.SelectPlaylistRow(initial[0].RowId, control: false, shift: false);
|
||||
controller.SelectPlaylistRow(initial[1].RowId, control: true, shift: false);
|
||||
|
||||
var moved = controller.ReorderPlaylistRows(
|
||||
initial[3].RowId,
|
||||
initial[0].RowId,
|
||||
LegacyDragDropPosition.Before);
|
||||
|
||||
Assert.Equal(
|
||||
[initial[3].RowId, initial[0].RowId, initial[1].RowId, initial[2].RowId],
|
||||
moved.Playlist.Select(row => row.RowId));
|
||||
Assert.Equal(
|
||||
initial[3].RowId,
|
||||
Assert.Single(moved.Playlist, row => row.IsSelected).RowId);
|
||||
}
|
||||
|
||||
private static async Task<LegacyOperatorController> ControllerWithPlaylistAsync(
|
||||
params int[] physicalCutRows)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user