feat: align legacy operator and playout behavior
This commit is contained in:
@@ -89,6 +89,9 @@ public sealed class LegacyNamedPlaylistOperatorIntegrationTests
|
||||
Assert.Equal("005930", row.StockCode);
|
||||
Assert.Equal("5001", row.SceneAlias);
|
||||
Assert.Equal("코스피", row.PlayoutSelection?.GroupCode);
|
||||
Assert.True(row.IsActive);
|
||||
Assert.False(row.IsSelected);
|
||||
Assert.Equal(0, controller.CreatePlayoutRequest().SelectedIndexZeroBased);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -156,6 +159,45 @@ public sealed class LegacyNamedPlaylistOperatorIntegrationTests
|
||||
saved.NamedPlaylist?.LastMutationOutcome);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NamedPlaylistIdentityDoesNotChangeWhenMovingAveragesChange()
|
||||
{
|
||||
var persistence = new OperatorNamedPlaylistPersistence([]);
|
||||
var controller = CreateController(persistence);
|
||||
controller.SelectTab(LegacyOperatorTabId.Index);
|
||||
var candle = LegacyFixedActionCatalog.Default
|
||||
.GetActions(LegacyFixedMarket.Index)
|
||||
.First(action => action.SupportsMovingAverages);
|
||||
controller.SetMovingAverages(ma5: false, ma20: false);
|
||||
var added = controller.ActivateFixedAction(candle.Id);
|
||||
var raw = Assert.Single(added.Playlist);
|
||||
Assert.Equal(string.Empty, raw.PlayoutSelection!.GraphicType);
|
||||
|
||||
controller.SetMovingAverages(ma5: true, ma20: false);
|
||||
Assert.Equal(
|
||||
"MA5",
|
||||
Assert.Single(controller.CreatePlayoutRequest().Playlist).Selection!.GraphicType);
|
||||
var listed = await controller.RefreshNamedPlaylistsAsync();
|
||||
controller.SelectNamedPlaylist(
|
||||
Assert.Single(listed.NamedPlaylist!.Definitions).DefinitionId);
|
||||
await controller.SaveCurrentNamedPlaylistAsync();
|
||||
var firstStored = Assert.Single(persistence.LastReplaceItems!).Selection;
|
||||
|
||||
controller.SetMovingAverages(ma5: false, ma20: true);
|
||||
Assert.Equal(
|
||||
"MA20",
|
||||
Assert.Single(controller.CreatePlayoutRequest().Playlist).Selection!.GraphicType);
|
||||
await controller.SaveCurrentNamedPlaylistAsync();
|
||||
var secondStored = Assert.Single(persistence.LastReplaceItems!).Selection;
|
||||
|
||||
Assert.Equal(firstStored, secondStored);
|
||||
Assert.Equal(raw.GraphicType, secondStored.GraphicType);
|
||||
Assert.DoesNotContain("MA5", secondStored.GraphicType, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("MA20", secondStored.GraphicType, StringComparison.Ordinal);
|
||||
Assert.Equal(string.Empty,
|
||||
Assert.Single(controller.Current.Playlist).PlayoutSelection!.GraphicType);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Save_to_opaque_id_selects_and_writes_once_in_one_native_command()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user