|
- package helper
-
- import (
- "testing"
-
- "github.com/QuantumNous/new-api/constant"
- "github.com/stretchr/testify/require"
- )
-
- func TestSupportsMatrixUsageBilling(t *testing.T) {
- require.True(t, SupportsMatrixUsageBilling("seedance-2", constant.ChannelTypeDoubaoVideo, "seedance-2"))
- require.False(t, SupportsMatrixUsageBilling("seedance-2", constant.ChannelTypeOpenAI, "seedance-2"))
- require.False(t, SupportsMatrixUsageBilling("unknown", constant.ChannelTypeDoubaoVideo, "unknown"))
- }
-
- func TestSupportsMatrixUsageBilling_DoubaoSeedanceOfficialModelNames(t *testing.T) {
- require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-260128", constant.ChannelTypeDoubaoVideo, "doubao-seedance-2-0-260128"))
- require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-fast-260128", constant.ChannelTypeDoubaoVideo, "doubao-seedance-2-0-fast-260128"))
- }
-
- func TestSupportsMatrixUsageBilling_DoubaoAipingChannel(t *testing.T) {
- require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-260128", constant.ChannelTypeDoubaoVideoCompatibleAiping, "doubao-seedance-2-0-260128"))
- require.True(t, SupportsMatrixUsageBilling("doubao-seedance-2-0-fast-260128", constant.ChannelTypeDoubaoVideoCompatibleAiping, "doubao-seedance-2-0-fast-260128"))
- }
-
- func TestSupportsMatrixUsageBilling_TianyiYunSeedanceChannel(t *testing.T) {
- require.True(t, SupportsMatrixUsageBilling("cdance2.0-0611", constant.ChannelTypeDoubaoVideoCompatibleTianyiYun, "cdance2.0-0611"))
- require.True(t, SupportsMatrixUsageBilling("cdance2.0-fast-0611", constant.ChannelTypeDoubaoVideoCompatibleTianyiYun, "cdance2.0-fast-0611"))
- require.False(t, SupportsMatrixUsageBilling("cdance2.0-0611", constant.ChannelTypeDoubaoVideoCompatibleAiping, "cdance2.0-0611"))
- }
-
- func TestSupportsMatrixUsageBilling_KlingAipingVideoModels(t *testing.T) {
- cases := []struct {
- billingModel string
- upstreamModel string
- }{
- {"kling-v1", "Kling-V1"},
- {"kling-v1-6", "Kling-V1.6"},
- {"kling-v2-6", "Kling-V2.6"},
- {"kling-v3", "Kling-V3"},
- {"kling-video-o1", "Kling-Video-O1"},
- {"kling-v3-omni", "Kling-V3-Omni"},
- }
-
- for _, tc := range cases {
- require.True(t, SupportsMatrixUsageBilling(tc.billingModel, constant.ChannelTypeKlingAiping, tc.billingModel), tc.billingModel)
- require.True(t, SupportsMatrixUsageBilling(tc.billingModel, constant.ChannelTypeKlingAiping, tc.upstreamModel), tc.billingModel)
- }
- }
-
- func TestResolvePricingModelMapping(t *testing.T) {
- mapped, err := ResolvePricingModelMapping("seedance-2", `{"seedance-2":"doubao-video-seedance"}`)
- require.NoError(t, err)
- require.Equal(t, "doubao-video-seedance", mapped)
-
- mapped, err = ResolvePricingModelMapping("seedance-2", `{"seedance-2":"a","a":"b"}`)
- require.NoError(t, err)
- require.Equal(t, "b", mapped)
-
- _, err = ResolvePricingModelMapping("seedance-2", `{"seedance-2":"a","a":"seedance-2"}`)
- require.ErrorContains(t, err, "model_mapping_contains_cycle")
- }
|