34 lines
1.0 KiB
Go
34 lines
1.0 KiB
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.nianxx.cn/wangxuming/NianAIGC/backend/internal/usage"
|
|
)
|
|
|
|
func TestInsertUsageEventUsesJobConflictForDedupe(t *testing.T) {
|
|
q := &fakeQuerier{}
|
|
db := NewDatabase(Config{Backend: BackendPostgres}, q)
|
|
_, inserted, err := db.InsertUsageEvent(context.Background(), usage.Event{ID: "e", JobID: "j", OwnerID: "a", Source: "platform", Quantity: 1})
|
|
if err != nil || inserted {
|
|
t.Fatalf("inserted=%v err=%v", inserted, err)
|
|
}
|
|
if q.sql != InsertUsageEventSQL || !strings.Contains(q.sql, "ON CONFLICT (job_id) DO NOTHING") {
|
|
t.Fatalf("sql=%q", q.sql)
|
|
}
|
|
}
|
|
|
|
func TestListUsageEventsUsesExplicitColumnsAndFilters(t *testing.T) {
|
|
q := &fakeQuerier{}
|
|
db := NewDatabase(Config{Backend: BackendPostgres}, q)
|
|
_, err := db.ListUsageEvents(context.Background(), usage.Filters{OwnerID: "a", OrganizationID: "o", From: "2026-01-01", To: "2026-02-01"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if q.sql != ListUsageEventsSQL || len(q.args) != 4 {
|
|
t.Fatalf("sql=%q args=%#v", q.sql, q.args)
|
|
}
|
|
}
|