package http_test import ( "encoding/json" openai "github.com/mudler/LocalAI/core/http/endpoints/openai" "github.com/mudler/LocalAI/core/schema" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) var _ = Describe("MapOpenAIToVideo", func() { It("maps size and seconds correctly", func() { cases := []struct { name string input *schema.OpenAIRequest raw map[string]interface{} expectsW int32 expectsH int32 expectsF int32 expectsN int32 }{ { name: "size in input", input: &schema.OpenAIRequest{ PredictionOptions: schema.PredictionOptions{ BasicModelRequest: schema.BasicModelRequest{Model: "m"}, }, Size: "256x128", }, expectsW: 256, expectsH: 128, }, { name: "size in raw and seconds as string", input: &schema.OpenAIRequest{PredictionOptions: schema.PredictionOptions{BasicModelRequest: schema.BasicModelRequest{Model: "m"}}}, raw: map[string]interface{}{"size": "720x480", "seconds": "2"}, expectsW: 720, expectsH: 480, expectsF: 30, expectsN: 60, }, { name: "seconds as number and fps override", input: &schema.OpenAIRequest{PredictionOptions: schema.PredictionOptions{BasicModelRequest: schema.BasicModelRequest{Model: "m"}}}, raw: map[string]interface{}{"seconds": 3.0, "fps": 24.0}, expectsF: 24, expectsN: 72, }, } for _, c := range cases { By(c.name) vr := openai.MapOpenAIToVideo(c.input, c.raw) if c.expectsW != 0 { Expect(vr.Width).To(Equal(c.expectsW)) } if c.expectsH != 0 { Expect(vr.Height).To(Equal(c.expectsH)) } if c.expectsF != 0 { Expect(vr.FPS).To(Equal(c.expectsF)) } if c.expectsN != 0 { Expect(vr.NumFrames).To(Equal(c.expectsN)) } b, err := json.Marshal(vr) Expect(err).ToNot(HaveOccurred()) _ = b } }) })