feat(sync): full code sync from release
This commit is contained in:
112
backend/internal/service/usage_log_test.go
Normal file
112
backend/internal/service/usage_log_test.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestParseUsageRequestType(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
type testCase struct {
|
||||
name string
|
||||
input string
|
||||
want RequestType
|
||||
wantErr bool
|
||||
}
|
||||
|
||||
cases := []testCase{
|
||||
{name: "unknown", input: "unknown", want: RequestTypeUnknown},
|
||||
{name: "sync", input: "sync", want: RequestTypeSync},
|
||||
{name: "stream", input: "stream", want: RequestTypeStream},
|
||||
{name: "ws_v2", input: "ws_v2", want: RequestTypeWSV2},
|
||||
{name: "case_insensitive", input: "WS_V2", want: RequestTypeWSV2},
|
||||
{name: "trim_spaces", input: " stream ", want: RequestTypeStream},
|
||||
{name: "invalid", input: "xxx", wantErr: true},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
got, err := ParseUsageRequestType(tc.input)
|
||||
if tc.wantErr {
|
||||
require.Error(t, err)
|
||||
return
|
||||
}
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tc.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestTypeNormalizeAndString(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
require.Equal(t, RequestTypeUnknown, RequestType(99).Normalize())
|
||||
require.Equal(t, "unknown", RequestType(99).String())
|
||||
require.Equal(t, "sync", RequestTypeSync.String())
|
||||
require.Equal(t, "stream", RequestTypeStream.String())
|
||||
require.Equal(t, "ws_v2", RequestTypeWSV2.String())
|
||||
}
|
||||
|
||||
func TestRequestTypeFromLegacy(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
require.Equal(t, RequestTypeWSV2, RequestTypeFromLegacy(false, true))
|
||||
require.Equal(t, RequestTypeStream, RequestTypeFromLegacy(true, false))
|
||||
require.Equal(t, RequestTypeSync, RequestTypeFromLegacy(false, false))
|
||||
}
|
||||
|
||||
func TestApplyLegacyRequestFields(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
stream, ws := ApplyLegacyRequestFields(RequestTypeSync, true, true)
|
||||
require.False(t, stream)
|
||||
require.False(t, ws)
|
||||
|
||||
stream, ws = ApplyLegacyRequestFields(RequestTypeStream, false, true)
|
||||
require.True(t, stream)
|
||||
require.False(t, ws)
|
||||
|
||||
stream, ws = ApplyLegacyRequestFields(RequestTypeWSV2, false, false)
|
||||
require.True(t, stream)
|
||||
require.True(t, ws)
|
||||
|
||||
stream, ws = ApplyLegacyRequestFields(RequestTypeUnknown, true, false)
|
||||
require.True(t, stream)
|
||||
require.False(t, ws)
|
||||
}
|
||||
|
||||
func TestUsageLogSyncRequestTypeAndLegacyFields(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
log := &UsageLog{RequestType: RequestTypeWSV2, Stream: false, OpenAIWSMode: false}
|
||||
log.SyncRequestTypeAndLegacyFields()
|
||||
|
||||
require.Equal(t, RequestTypeWSV2, log.RequestType)
|
||||
require.True(t, log.Stream)
|
||||
require.True(t, log.OpenAIWSMode)
|
||||
}
|
||||
|
||||
func TestUsageLogEffectiveRequestTypeFallback(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
log := &UsageLog{RequestType: RequestTypeUnknown, Stream: true, OpenAIWSMode: true}
|
||||
require.Equal(t, RequestTypeWSV2, log.EffectiveRequestType())
|
||||
}
|
||||
|
||||
func TestUsageLogEffectiveRequestTypeNilReceiver(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var log *UsageLog
|
||||
require.Equal(t, RequestTypeUnknown, log.EffectiveRequestType())
|
||||
}
|
||||
|
||||
func TestUsageLogSyncRequestTypeAndLegacyFieldsNilReceiver(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var log *UsageLog
|
||||
log.SyncRequestTypeAndLegacyFields()
|
||||
}
|
||||
Reference in New Issue
Block a user