SDT/tests/DevTool.Tests/WorkspaceFavoritesTests.cs
stan44 d5a74be368 Add guided CLI workflows and config commands
- introduce `sdt` subcommands for run, debug, setup, env, favorite, and explain
- add project/workspace discovery plus config bootstrap and migration helpers
- expand tests for CLI parsing, project role detection, and headless flows
2026-03-29 22:22:48 -05:00

63 lines
2.0 KiB
C#

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
{
Id = "build-a",
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-a", loaded.Value.Config.Favorites[0].Id);
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;
}
}