Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

64 строки
2.6 KiB

  1. package service
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/constant"
  6. "github.com/QuantumNous/new-api/model"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestResolveKlingAssetChannel_PrefersBoundChannel(t *testing.T) {
  11. db := setupDoubaoAssetChannelDB(t)
  12. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "bound-key", common.ChannelStatusEnabled)
  13. createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
  14. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
  15. channel, err := ResolveKlingAssetChannel(10, "default")
  16. require.NoError(t, err)
  17. require.NotNil(t, channel)
  18. assert.Equal(t, 1, channel.Id)
  19. assert.Equal(t, "bound-key", channel.Key)
  20. }
  21. func TestResolveKlingAssetChannel_AutoMatchesAndPersistsWhenUnbound(t *testing.T) {
  22. db := setupDoubaoAssetChannelDB(t)
  23. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
  24. channel, err := ResolveKlingAssetChannel(10, "default")
  25. require.NoError(t, err)
  26. require.NotNil(t, channel)
  27. assert.Equal(t, 1, channel.Id)
  28. binding, err := model.GetUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default")
  29. require.NoError(t, err)
  30. require.NotNil(t, binding)
  31. assert.Equal(t, 1, binding.ChannelId)
  32. }
  33. func TestResolveKlingAssetChannel_IgnoresDisabledChannel(t *testing.T) {
  34. db := setupDoubaoAssetChannelDB(t)
  35. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "disabled-key", common.ChannelStatusAutoDisabled)
  36. createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "enabled-key", common.ChannelStatusEnabled)
  37. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
  38. channel, err := ResolveKlingAssetChannel(10, "default")
  39. require.NoError(t, err)
  40. require.NotNil(t, channel)
  41. assert.Equal(t, 2, channel.Id)
  42. }
  43. func TestIsUsableKlingAssetChannel_RejectsOtherChannelType(t *testing.T) {
  44. ch := &model.Channel{Type: constant.ChannelTypeDoubaoVideoCompatibleAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "default"}
  45. assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
  46. }
  47. func TestIsUsableKlingAssetChannel_RejectsGroupMismatch(t *testing.T) {
  48. ch := &model.Channel{Type: constant.ChannelTypeKlingAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "vip"}
  49. assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
  50. }