61 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|