mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-04-02 22:42:14 +08:00
Cover IsValidModelSource/NormalizeModelSource, resolveModelDimensionExpression SQL expressions, invalid model_source 400 responses on both GetModelStats and GetUserBreakdown, upstream_model in scan/insert SQL mock expectations, and updated passthrough/billing test signatures.
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
//go:build unit
|
|
|
|
package repository
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/pkg/usagestats"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestResolveEndpointColumn(t *testing.T) {
|
|
tests := []struct {
|
|
endpointType string
|
|
want string
|
|
}{
|
|
{"inbound", "ul.inbound_endpoint"},
|
|
{"upstream", "ul.upstream_endpoint"},
|
|
{"path", "ul.inbound_endpoint || ' -> ' || ul.upstream_endpoint"},
|
|
{"", "ul.inbound_endpoint"}, // default
|
|
{"unknown", "ul.inbound_endpoint"}, // fallback
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.endpointType, func(t *testing.T) {
|
|
got := resolveEndpointColumn(tc.endpointType)
|
|
require.Equal(t, tc.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestResolveModelDimensionExpression(t *testing.T) {
|
|
tests := []struct {
|
|
modelType string
|
|
want string
|
|
}{
|
|
{usagestats.ModelSourceRequested, "model"},
|
|
{usagestats.ModelSourceUpstream, "COALESCE(NULLIF(TRIM(upstream_model), ''), model)"},
|
|
{usagestats.ModelSourceMapping, "(model || ' -> ' || COALESCE(NULLIF(TRIM(upstream_model), ''), model))"},
|
|
{"", "model"},
|
|
{"invalid", "model"},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.modelType, func(t *testing.T) {
|
|
got := resolveModelDimensionExpression(tc.modelType)
|
|
require.Equal(t, tc.want, got)
|
|
})
|
|
}
|
|
}
|