package doubao import ( "testing" "github.com/QuantumNous/new-api/model" "github.com/stretchr/testify/require" ) func TestParseTaskResult_SuccessWithUsage(t *testing.T) { adaptor := &TaskAdaptor{} taskInfo, err := adaptor.ParseTaskResult([]byte(`{ "status":"succeeded", "content":{"video_url":"https://example.test/video.mp4"}, "usage":{"completion_tokens":12,"total_tokens":3456} }`)) require.NoError(t, err) require.Equal(t, string(model.TaskStatusSuccess), taskInfo.Status) require.Equal(t, "https://example.test/video.mp4", taskInfo.Url) require.Equal(t, 12, taskInfo.CompletionTokens) require.Equal(t, 3456, taskInfo.TotalTokens) } func TestParseTaskResult_SuccessWithoutUsage(t *testing.T) { adaptor := &TaskAdaptor{} taskInfo, err := adaptor.ParseTaskResult([]byte(`{ "status":"succeeded", "content":{"video_url":"https://example.test/video.mp4"} }`)) require.NoError(t, err) require.Equal(t, string(model.TaskStatusSuccess), taskInfo.Status) require.Zero(t, taskInfo.TotalTokens) } func TestParseTaskResult_NonSuccessStatusesDoNotRequireUsage(t *testing.T) { adaptor := &TaskAdaptor{} cases := map[string]model.TaskStatus{ "queued": model.TaskStatusQueued, "processing": model.TaskStatusInProgress, "failed": model.TaskStatusFailure, } for status, want := range cases { taskInfo, err := adaptor.ParseTaskResult([]byte(`{"status":"` + status + `"}`)) require.NoError(t, err) require.Equal(t, string(want), taskInfo.Status) require.Zero(t, taskInfo.TotalTokens) } }