using Sdt.Config; using Xunit; namespace DevTool.Tests; public sealed class WorkspaceFavoritesTests { [Fact] public void SaveAndLoad_PreservesFavorites() { var workspaceRoot = CreateTempDir("sdt-favorites-"); var workspace = new WorkspaceConfig { Name = "My Workspace", Projects = [ new WorkspaceProject { Name = "proj-a", Path = "proj-a" } ], Favorites = [ new WorkspaceFavorite { ProjectPath = "proj-a", WorkflowId = "build", Label = "Build A" } ] }; WorkspaceLoader.Save(workspaceRoot, workspace); var loaded = WorkspaceLoader.FindAndLoad(workspaceRoot); Assert.NotNull(loaded); Assert.Single(loaded!.Value.Config.Favorites); Assert.Equal("build", loaded.Value.Config.Favorites[0].WorkflowId); Assert.Equal("Build A", loaded.Value.Config.Favorites[0].Label); } [Fact] public void ResolveFavoriteProjectRoot_AcceptsAbsolutePaths() { var workspaceRoot = CreateTempDir("sdt-favorites-abs-"); var abs = Path.GetFullPath(Path.Combine(Path.GetTempPath(), "fav-proj-" + Guid.NewGuid().ToString("N"))); var favorite = new WorkspaceFavorite { ProjectPath = abs, WorkflowId = "build" }; var resolved = WorkspaceLoader.ResolveFavoriteProjectRoot(workspaceRoot, favorite); Assert.Equal(abs, resolved, ignoreCase: OperatingSystem.IsWindows()); } private static string CreateTempDir(string prefix) { var path = Path.Combine(Path.GetTempPath(), prefix + Guid.NewGuid().ToString("N")); Directory.CreateDirectory(path); return path; } }