package api import ( "testing" "jiggablend/pkg/types" ) func TestMergeBlendMetadataForJobCreate_PreservesUploadMetadata(t *testing.T) { uploadMeta := &types.BlendMetadata{ FrameStart: -15, FrameEnd: 1468, BlenderVersion: "4.5.11", RenderSettings: types.RenderSettings{ ResolutionX: 2560, ResolutionY: 1440, Engine: "cycles", OutputFormat: "EXR", }, SceneInfo: types.SceneInfo{ ObjectCount: 42, }, } frameStart := 800 frameEnd := 800 outputFormat := "EXR" req := &types.CreateJobRequest{ FrameStart: &frameStart, FrameEnd: &frameEnd, OutputFormat: &outputFormat, } meta, err := mergeBlendMetadataForJobCreate(uploadMeta, req) if err != nil { t.Fatalf("mergeBlendMetadataForJobCreate failed: %v", err) } if meta.BlenderVersion != "4.5.11" { t.Fatalf("expected blender_version 4.5.11, got %q", meta.BlenderVersion) } if meta.FrameStart != 800 || meta.FrameEnd != 800 { t.Fatalf("expected frame range 800-800, got %d-%d", meta.FrameStart, meta.FrameEnd) } if meta.RenderSettings.ResolutionX != 2560 || meta.RenderSettings.ResolutionY != 1440 { t.Fatalf("expected resolution 2560x1440, got %dx%d", meta.RenderSettings.ResolutionX, meta.RenderSettings.ResolutionY) } if meta.RenderSettings.Engine != "cycles" { t.Fatalf("expected engine cycles, got %q", meta.RenderSettings.Engine) } if meta.RenderSettings.OutputFormat != "EXR" { t.Fatalf("expected output_format EXR, got %q", meta.RenderSettings.OutputFormat) } if meta.SceneInfo.ObjectCount != 42 { t.Fatalf("expected scene object_count 42, got %d", meta.SceneInfo.ObjectCount) } } func TestMergeBlendMetadataForJobCreate_RequestOverridesVersion(t *testing.T) { uploadMeta := &types.BlendMetadata{ BlenderVersion: "4.5.11", } frameStart := 1 frameEnd := 1 override := "4.2.3" req := &types.CreateJobRequest{ FrameStart: &frameStart, FrameEnd: &frameEnd, BlenderVersion: &override, } meta, err := mergeBlendMetadataForJobCreate(uploadMeta, req) if err != nil { t.Fatalf("mergeBlendMetadataForJobCreate failed: %v", err) } if meta.BlenderVersion != "4.2.3" { t.Fatalf("expected request override 4.2.3, got %q", meta.BlenderVersion) } } func TestMergeBlendMetadataForJobCreate_RequiresBlenderVersion(t *testing.T) { frameStart := 1 frameEnd := 1 req := &types.CreateJobRequest{ FrameStart: &frameStart, FrameEnd: &frameEnd, } if _, err := mergeBlendMetadataForJobCreate(nil, req); err == nil { t.Fatal("expected error when blender_version is missing") } } func TestUploadSessionMetadata(t *testing.T) { session := &UploadSession{ ResultMetadata: &types.BlendMetadata{ BlenderVersion: "4.5.11", }, } meta := uploadSessionMetadata(session) if meta == nil || meta.BlenderVersion != "4.5.11" { t.Fatalf("unexpected metadata: %+v", meta) } }