M4: Folders CRUD - model, DTOs, mapper, client, 5 cmdlets + tests
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
using System.Reflection;
|
||||
using PSInfisicalAPI.Models;
|
||||
using Xunit;
|
||||
|
||||
namespace PSInfisicalAPI.Tests
|
||||
{
|
||||
public class FolderMapperTests
|
||||
{
|
||||
private static readonly System.Type MapperType = typeof(PSInfisicalAPI.Connections.InfisicalConnection).Assembly
|
||||
.GetType("PSInfisicalAPI.Folders.InfisicalFolderMapper", true);
|
||||
|
||||
private static readonly System.Type DtoType = typeof(PSInfisicalAPI.Connections.InfisicalConnection).Assembly
|
||||
.GetType("PSInfisicalAPI.Folders.InfisicalFolderResponseDto", true);
|
||||
|
||||
private static InfisicalFolder InvokeMap(object dto, string fallbackProjectId, string fallbackEnvironment)
|
||||
{
|
||||
MethodInfo map = MapperType.GetMethod("Map", BindingFlags.Public | BindingFlags.Static);
|
||||
return (InfisicalFolder)map.Invoke(null, new object[] { dto, fallbackProjectId, fallbackEnvironment });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_Null_Returns_Null()
|
||||
{
|
||||
Assert.Null(InvokeMap(null, "proj-x", "dev"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_Populates_Fields_With_Explicit_ProjectId()
|
||||
{
|
||||
object dto = System.Activator.CreateInstance(DtoType);
|
||||
DtoType.GetProperty("Id").SetValue(dto, "fld-001");
|
||||
DtoType.GetProperty("Name").SetValue(dto, "config");
|
||||
DtoType.GetProperty("Path").SetValue(dto, "/app/config");
|
||||
DtoType.GetProperty("ParentId").SetValue(dto, "fld-root");
|
||||
DtoType.GetProperty("Environment").SetValue(dto, "prod");
|
||||
DtoType.GetProperty("ProjectId").SetValue(dto, "proj-001");
|
||||
|
||||
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
||||
|
||||
Assert.Equal("fld-001", folder.Id);
|
||||
Assert.Equal("config", folder.Name);
|
||||
Assert.Equal("/app/config", folder.Path);
|
||||
Assert.Equal("fld-root", folder.ParentId);
|
||||
Assert.Equal("prod", folder.Environment);
|
||||
Assert.Equal("proj-001", folder.ProjectId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_Uses_WorkspaceId_When_ProjectId_Empty()
|
||||
{
|
||||
object dto = System.Activator.CreateInstance(DtoType);
|
||||
DtoType.GetProperty("Id").SetValue(dto, "fld-002");
|
||||
DtoType.GetProperty("WorkspaceId").SetValue(dto, "wks-002");
|
||||
|
||||
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
||||
Assert.Equal("wks-002", folder.ProjectId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_Uses_Fallback_When_No_ProjectId_Or_Environment()
|
||||
{
|
||||
object dto = System.Activator.CreateInstance(DtoType);
|
||||
DtoType.GetProperty("Id").SetValue(dto, "fld-003");
|
||||
|
||||
InfisicalFolder folder = InvokeMap(dto, "fallback-proj", "fallback-env");
|
||||
Assert.Equal("fallback-proj", folder.ProjectId);
|
||||
Assert.Equal("fallback-env", folder.Environment);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_Falls_Back_To_InternalId_For_Id()
|
||||
{
|
||||
object dto = System.Activator.CreateInstance(DtoType);
|
||||
DtoType.GetProperty("InternalId").SetValue(dto, "internal-fld");
|
||||
|
||||
InfisicalFolder folder = InvokeMap(dto, "p", "e");
|
||||
Assert.Equal("internal-fld", folder.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user