using System; using System.IO; using Xunit; using ytLive.ViewModels; namespace ytLive.Tests; /// /// The top bar's one decision: [ Build Scenes ][ Record / Go Live ]. Build Scenes ships /// highlighted, and it is edit mode — the old EDIT toggle is gone, so "can I edit?" and "which /// world am I in?" cannot disagree. /// [Collection("MainViewModelLayoutPath")] public class TopBarWorldTests { [Fact] public void Build_scenes_is_the_default_world_and_is_the_only_place_editing_lives() { var db = Path.Combine(Path.GetTempPath(), $"llamacasty-world-{Guid.NewGuid():N}.db"); MainViewModel.LayoutPathOverride = db; try { var vm = new MainViewModel(); // Launch state: Build Scenes highlighted, editing on. Assert.Equal(BarWorld.Build, vm.BarWorld); Assert.True(vm.IsBuildWorld); Assert.False(vm.IsOutputWorld); Assert.True(vm.IsEditMode); // Record / Go Live leaves edit mode — the output surface has nothing to drag. vm.EnterOutputWorldCommand.Execute(null); Assert.Equal(BarWorld.Output, vm.BarWorld); Assert.True(vm.IsOutputWorld); Assert.False(vm.IsBuildWorld); Assert.False(vm.IsEditMode); // Clicking the highlighted half is not a no-op: it re-enters that world, which is how a // creator takes editing back during a session. vm.EnterBuildWorldCommand.Execute(null); Assert.True(vm.IsBuildWorld); Assert.True(vm.IsEditMode); // …and re-entering the world already in force still re-asserts its edit state. vm.EditingActive = false; vm.EnterBuildWorldCommand.Execute(null); Assert.True(vm.IsEditMode); } finally { MainViewModel.LayoutPathOverride = null; try { File.Delete(db); } catch (IOException) { } } } }