Files
ttstd-infinite-canvas/backend/internal/app/project_asset_folder_test.go

63 lines
2.0 KiB
Go

package app
import (
"testing"
"infinite-canvas/backend/internal/model"
)
func TestValidateProjectAssetFolderParentRejectsCycle(t *testing.T) {
folders := []model.ProjectAssetFolder{
{ID: "root", ParentID: ""},
{ID: "child", ParentID: "root"},
{ID: "leaf", ParentID: "child"},
}
if err := validateProjectAssetFolderParent(folders, "root", "leaf"); err == nil {
t.Fatal("expected moving a folder into its descendant to fail")
}
}
func TestValidateProjectAssetFolderParentLimitsCombinedDepth(t *testing.T) {
folders := []model.ProjectAssetFolder{
{ID: "a", ParentID: ""},
{ID: "b", ParentID: "a"},
{ID: "c", ParentID: "b"},
{ID: "d", ParentID: "c"},
{ID: "e", ParentID: "d"},
{ID: "f", ParentID: "e"},
{ID: "g", ParentID: "f"},
{ID: "h", ParentID: "g"},
}
if err := validateProjectAssetFolderParent(folders, "", "h"); err == nil {
t.Fatal("expected a ninth level folder to fail")
}
if err := validateProjectAssetFolderParent(folders, "", "g"); err != nil {
t.Fatalf("expected an eighth level folder to be allowed: %v", err)
}
}
func TestProjectAssetFolderNameIsUniqueWithinSiblingOnly(t *testing.T) {
folders := []model.ProjectAssetFolder{
{ID: "first", ParentID: "one", Name: "Reference"},
{ID: "second", ParentID: "two", Name: "Reference"},
}
if !projectAssetFolderNameExists(folders, "one", "reference", "") {
t.Fatal("expected case-insensitive duplicate in the same parent")
}
if projectAssetFolderNameExists(folders, "three", "Reference", "") {
t.Fatal("did not expect a duplicate across different parents")
}
}
func TestValidateProjectAssetFolderTheme(t *testing.T) {
if theme, err := validateProjectAssetFolderTheme(""); err != nil || theme != "aurora" {
t.Fatalf("expected empty theme to use aurora, got %q: %v", theme, err)
}
if theme, err := validateProjectAssetFolderTheme(" pearl "); err != nil || theme != "pearl" {
t.Fatalf("expected pearl theme, got %q: %v", theme, err)
}
if _, err := validateProjectAssetFolderTheme("content-image"); err == nil {
t.Fatal("expected arbitrary content image theme to fail")
}
}