SDT/tests/DevTool.Tests/WorkspaceFavoritesTests.cs
2026-03-01 20:52:56 -06:00

61 lines
1.9 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
{
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;
}
}