You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

63 regels
2.8 KiB

  1. package helper
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/constant"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestSupportsMatrixUsageBilling(t *testing.T) {
  8. require.True(t, SupportsMatrixUsageBilling("seedance-2", constant.ChannelTypeDoubaoVideo, "seedance-2"))
  9. require.False(t, SupportsMatrixUsageBilling("seedance-2", constant.ChannelTypeOpenAI, "seedance-2"))
  10. require.False(t, SupportsMatrixUsageBilling("unknown", constant.ChannelTypeDoubaoVideo, "unknown"))
  11. }
  12. func TestSupportsMatrixUsageBilling_DoubaoSeedanceOfficialModelNames(t *testing.T) {
  13. require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-260128", constant.ChannelTypeDoubaoVideo, "doubao-seedance-2-0-260128"))
  14. require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-fast-260128", constant.ChannelTypeDoubaoVideo, "doubao-seedance-2-0-fast-260128"))
  15. }
  16. func TestSupportsMatrixUsageBilling_DoubaoAipingChannel(t *testing.T) {
  17. require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-260128", constant.ChannelTypeDoubaoVideoCompatibleAiping, "doubao-seedance-2-0-260128"))
  18. require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-fast-260128", constant.ChannelTypeDoubaoVideoCompatibleAiping, "doubao-seedance-2-0-fast-260128"))
  19. }
  20. func TestSupportsMatrixUsageBilling_TianyiYunSeedanceChannel(t *testing.T) {
  21. require.True(t, SupportsMatrixUsageBilling("cdance2.0-0611", constant.ChannelTypeDoubaoVideoCompatibleTianyiYun, "cdance2.0-0611"))
  22. require.True(t, SupportsMatrixUsageBilling("cdance2.0-fast-0611", constant.ChannelTypeDoubaoVideoCompatibleTianyiYun, "cdance2.0-fast-0611"))
  23. require.False(t, SupportsMatrixUsageBilling("cdance2.0-0611", constant.ChannelTypeDoubaoVideoCompatibleAiping, "cdance2.0-0611"))
  24. }
  25. func TestSupportsMatrixUsageBilling_KlingAipingVideoModels(t *testing.T) {
  26. cases := []struct {
  27. billingModel string
  28. upstreamModel string
  29. }{
  30. {"kling-v1", "Kling-V1"},
  31. {"kling-v1-6", "Kling-V1.6"},
  32. {"kling-v2-6", "Kling-V2.6"},
  33. {"kling-v3", "Kling-V3"},
  34. {"kling-video-o1", "Kling-Video-O1"},
  35. {"kling-v3-omni", "Kling-V3-Omni"},
  36. }
  37. for _, tc := range cases {
  38. require.True(t, SupportsMatrixUsageBilling(tc.billingModel, constant.ChannelTypeKlingAiping, tc.billingModel), tc.billingModel)
  39. require.True(t, SupportsMatrixUsageBilling(tc.billingModel, constant.ChannelTypeKlingAiping, tc.upstreamModel), tc.billingModel)
  40. }
  41. }
  42. func TestResolvePricingModelMapping(t *testing.T) {
  43. mapped, err := ResolvePricingModelMapping("seedance-2", `{"seedance-2":"doubao-video-seedance"}`)
  44. require.NoError(t, err)
  45. require.Equal(t, "doubao-video-seedance", mapped)
  46. mapped, err = ResolvePricingModelMapping("seedance-2", `{"seedance-2":"a","a":"b"}`)
  47. require.NoError(t, err)
  48. require.Equal(t, "b", mapped)
  49. _, err = ResolvePricingModelMapping("seedance-2", `{"seedance-2":"a","a":"seedance-2"}`)
  50. require.ErrorContains(t, err, "model_mapping_contains_cycle")
  51. }