feat: add configurable operator appearance and layout
This commit is contained in:
@@ -102,10 +102,35 @@ public sealed class LegacyOperatorSettingsNativeContractTests
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("LegacySetOperatorNavigationExpandedIntent", Playout,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("LegacySetOperatorAppearanceIntent", Playout,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("ReconcileRejectedOperatorSettingsIntent(", process,
|
||||
StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AppearanceIntentIsPersistedRoutedAndProjectedAsOneClosedUpdate()
|
||||
{
|
||||
Assert.Contains(
|
||||
"case LegacySetOperatorAppearanceIntent appearance:",
|
||||
Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("ColorTheme = appearance.ColorTheme", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("ViewMode = appearance.ViewMode", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("StartWorkspace = appearance.StartWorkspace", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("_operatorSettings.ColorTheme", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("_operatorSettings.ViewMode", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("_operatorSettings.StartWorkspace", Settings,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("LegacySetOperatorAppearanceIntent", Window,
|
||||
StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SettingsStateIsProjectedWithoutPublishingFullNativePaths()
|
||||
{
|
||||
@@ -132,6 +157,28 @@ public sealed class LegacyOperatorSettingsNativeContractTests
|
||||
StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SettingsUsesConciseRoutineStatusCopy()
|
||||
{
|
||||
var cancelledPicker = Slice(
|
||||
Settings,
|
||||
"if (selected is null)",
|
||||
"cancellationToken.ThrowIfCancellationRequested();");
|
||||
|
||||
Assert.DoesNotContain(
|
||||
"SetOperatorSettingsMessage",
|
||||
cancelledPicker,
|
||||
StringComparison.Ordinal);
|
||||
Assert.Contains("\"저장됨\"", Settings, StringComparison.Ordinal);
|
||||
Assert.Contains("\"저장됨 · 재시작 필요\"", Settings, StringComparison.Ordinal);
|
||||
Assert.Contains("\"초기화됨 · 재시작 필요\"", Settings, StringComparison.Ordinal);
|
||||
Assert.Contains("\"앱 기본값\"", Settings, StringComparison.Ordinal);
|
||||
Assert.Contains("\"자동\"", Settings, StringComparison.Ordinal);
|
||||
Assert.Contains("\"사용 가능\"", Settings, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("외부 영상", Settings, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("핵심 자산 확인됨", Settings, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
private static string Slice(string value, string start, string end)
|
||||
{
|
||||
var startIndex = RequiredIndex(value, start);
|
||||
|
||||
Reference in New Issue
Block a user