Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

51 wiersze
1.5 KiB

  1. package doubao
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/model"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestParseTaskResult_SuccessWithUsage(t *testing.T) {
  8. adaptor := &TaskAdaptor{}
  9. taskInfo, err := adaptor.ParseTaskResult([]byte(`{
  10. "status":"succeeded",
  11. "content":{"video_url":"https://example.test/video.mp4"},
  12. "usage":{"completion_tokens":12,"total_tokens":3456}
  13. }`))
  14. require.NoError(t, err)
  15. require.Equal(t, string(model.TaskStatusSuccess), taskInfo.Status)
  16. require.Equal(t, "https://example.test/video.mp4", taskInfo.Url)
  17. require.Equal(t, 12, taskInfo.CompletionTokens)
  18. require.Equal(t, 3456, taskInfo.TotalTokens)
  19. }
  20. func TestParseTaskResult_SuccessWithoutUsage(t *testing.T) {
  21. adaptor := &TaskAdaptor{}
  22. taskInfo, err := adaptor.ParseTaskResult([]byte(`{
  23. "status":"succeeded",
  24. "content":{"video_url":"https://example.test/video.mp4"}
  25. }`))
  26. require.NoError(t, err)
  27. require.Equal(t, string(model.TaskStatusSuccess), taskInfo.Status)
  28. require.Zero(t, taskInfo.TotalTokens)
  29. }
  30. func TestParseTaskResult_NonSuccessStatusesDoNotRequireUsage(t *testing.T) {
  31. adaptor := &TaskAdaptor{}
  32. cases := map[string]model.TaskStatus{
  33. "queued": model.TaskStatusQueued,
  34. "processing": model.TaskStatusInProgress,
  35. "failed": model.TaskStatusFailure,
  36. }
  37. for status, want := range cases {
  38. taskInfo, err := adaptor.ParseTaskResult([]byte(`{"status":"` + status + `"}`))
  39. require.NoError(t, err)
  40. require.Equal(t, string(want), taskInfo.Status)
  41. require.Zero(t, taskInfo.TotalTokens)
  42. }
  43. }