batch_image_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //go:build unit
  2. package service
  3. import (
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestCanTransitionBatchImageJob(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. from string
  12. to string
  13. want bool
  14. }{
  15. {name: "created_to_uploading", from: BatchImageJobStatusCreated, to: BatchImageJobStatusUploading, want: true},
  16. {name: "uploading_to_submitted", from: BatchImageJobStatusUploading, to: BatchImageJobStatusSubmitted, want: true},
  17. {name: "submitted_to_running", from: BatchImageJobStatusSubmitted, to: BatchImageJobStatusRunning, want: true},
  18. {name: "running_self_poll", from: BatchImageJobStatusRunning, to: BatchImageJobStatusRunning, want: true},
  19. {name: "running_to_indexing", from: BatchImageJobStatusRunning, to: BatchImageJobStatusIndexing, want: true},
  20. {name: "indexing_to_settling", from: BatchImageJobStatusIndexing, to: BatchImageJobStatusSettling, want: true},
  21. {name: "settling_to_completed", from: BatchImageJobStatusSettling, to: BatchImageJobStatusCompleted, want: true},
  22. {name: "submitted_to_cancelled", from: BatchImageJobStatusSubmitted, to: BatchImageJobStatusCancelled, want: true},
  23. {name: "non_terminal_to_failed", from: BatchImageJobStatusCreated, to: BatchImageJobStatusFailed, want: true},
  24. {name: "completed_to_output_deleted", from: BatchImageJobStatusCompleted, to: BatchImageJobStatusOutputDeleted, want: true},
  25. {name: "failed_to_output_deleted", from: BatchImageJobStatusFailed, to: BatchImageJobStatusOutputDeleted, want: true},
  26. {name: "cancelled_to_output_deleted", from: BatchImageJobStatusCancelled, to: BatchImageJobStatusOutputDeleted, want: true},
  27. {name: "created_to_running_invalid", from: BatchImageJobStatusCreated, to: BatchImageJobStatusRunning, want: false},
  28. {name: "completed_to_running_invalid", from: BatchImageJobStatusCompleted, to: BatchImageJobStatusRunning, want: false},
  29. {name: "output_deleted_to_failed_invalid", from: BatchImageJobStatusOutputDeleted, to: BatchImageJobStatusFailed, want: false},
  30. }
  31. for _, tt := range tests {
  32. t.Run(tt.name, func(t *testing.T) {
  33. require.Equal(t, tt.want, CanTransitionBatchImageJob(tt.from, tt.to))
  34. })
  35. }
  36. }
  37. func TestIsTerminalBatchImageJobStatus(t *testing.T) {
  38. require.True(t, IsTerminalBatchImageJobStatus(BatchImageJobStatusCompleted))
  39. require.True(t, IsTerminalBatchImageJobStatus(BatchImageJobStatusFailed))
  40. require.True(t, IsTerminalBatchImageJobStatus(BatchImageJobStatusCancelled))
  41. require.True(t, IsTerminalBatchImageJobStatus(BatchImageJobStatusOutputDeleted))
  42. require.False(t, IsTerminalBatchImageJobStatus(BatchImageJobStatusRunning))
  43. }
  44. func TestIsSupportedBatchImageProvider(t *testing.T) {
  45. require.True(t, IsSupportedBatchImageProvider(BatchImageProviderGeminiAPI))
  46. require.True(t, IsSupportedBatchImageProvider(BatchImageProviderVertex))
  47. require.False(t, IsSupportedBatchImageProvider("gemini_oauth"))
  48. require.False(t, IsSupportedBatchImageProvider(""))
  49. }
  50. func TestNewBatchImageID(t *testing.T) {
  51. id, err := NewBatchImageID()
  52. require.NoError(t, err)
  53. require.True(t, strings.HasPrefix(id, "imgbatch_"))
  54. require.Len(t, id, len("imgbatch_")+32)
  55. }