| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //go:build unit
- package repository
- import (
- "context"
- "errors"
- "testing"
- "time"
- )
- type fakeRepoForAdapter struct {
- upsertCalledWith []UserPlatformQuotaRecord
- upsertCalledUserID int64
- upsertErr error
- resetCalledWith [4]any // userID, platform, window, newStart
- resetErr error
- }
- func (f *fakeRepoForAdapter) BulkInsertInitial(_ context.Context, _ []UserPlatformQuotaRecord) error {
- return nil
- }
- func (f *fakeRepoForAdapter) GetByUserPlatform(_ context.Context, _ int64, _ string) (*UserPlatformQuotaRecord, error) {
- return nil, nil
- }
- func (f *fakeRepoForAdapter) ListByUser(_ context.Context, _ int64) ([]UserPlatformQuotaRecord, error) {
- return nil, nil
- }
- func (f *fakeRepoForAdapter) IncrementUsageWithReset(_ context.Context, _ int64, _ string, _ float64, _ time.Time) error {
- return nil
- }
- func (f *fakeRepoForAdapter) ResetExpiredWindow(_ context.Context, userID int64, platform string, window string, newStart time.Time) error {
- f.resetCalledWith = [4]any{userID, platform, window, newStart}
- return f.resetErr
- }
- func (f *fakeRepoForAdapter) UpsertForUser(_ context.Context, userID int64, records []UserPlatformQuotaRecord) error {
- f.upsertCalledUserID = userID
- f.upsertCalledWith = records
- return f.upsertErr
- }
- func (f *fakeRepoForAdapter) BatchSnapshotUsage(_ context.Context, _ []UserPlatformQuotaSnapshot, _ time.Time) error {
- return nil
- }
- func TestGenericAdapter_UpsertForUser_ForwardsRecords(t *testing.T) {
- fake := &fakeRepoForAdapter{}
- adapter := NewUserPlatformQuotaServiceAdapter(fake)
- err := adapter.UpsertForUser(context.Background(), 42, nil)
- if err != nil {
- t.Fatalf("unexpected err: %v", err)
- }
- if fake.upsertCalledUserID != 42 {
- t.Errorf("forwarded userID = %d, want 42", fake.upsertCalledUserID)
- }
- }
- func TestGenericAdapter_UpsertForUser_PropagatesError(t *testing.T) {
- wantErr := errors.New("boom")
- fake := &fakeRepoForAdapter{upsertErr: wantErr}
- adapter := NewUserPlatformQuotaServiceAdapter(fake)
- err := adapter.UpsertForUser(context.Background(), 1, nil)
- if !errors.Is(err, wantErr) {
- t.Errorf("expected %v, got %v", wantErr, err)
- }
- }
- func TestGenericAdapter_ResetExpiredWindow_ForwardsAllParams(t *testing.T) {
- fake := &fakeRepoForAdapter{}
- adapter := NewUserPlatformQuotaServiceAdapter(fake)
- now := time.Date(2026, 5, 23, 10, 0, 0, 0, time.UTC)
- if err := adapter.ResetExpiredWindow(context.Background(), 7, "openai", "weekly", now); err != nil {
- t.Fatalf("unexpected err: %v", err)
- }
- if fake.resetCalledWith[0].(int64) != 7 ||
- fake.resetCalledWith[1].(string) != "openai" ||
- fake.resetCalledWith[2].(string) != "weekly" ||
- !fake.resetCalledWith[3].(time.Time).Equal(now) {
- t.Errorf("forwarded params mismatch: %+v", fake.resetCalledWith)
- }
- }
- func TestGenericAdapter_ResetExpiredWindow_PropagatesError(t *testing.T) {
- wantErr := errors.New("not found")
- fake := &fakeRepoForAdapter{resetErr: wantErr}
- adapter := NewUserPlatformQuotaServiceAdapter(fake)
- err := adapter.ResetExpiredWindow(context.Background(), 1, "a", "daily", time.Now())
- if !errors.Is(err, wantErr) {
- t.Errorf("expected %v, got %v", wantErr, err)
- }
- }
|