Files
explorer-monorepo/backend/api/rest/stats_internal_test.go
defiQUG bdae5a9f6e feat: explorer API, wallet, CCIP scripts, and config refresh
- Backend REST/gateway/track routes, analytics, Blockscout proxy paths.
- Frontend wallet and liquidity surfaces; MetaMask token list alignment.
- Deployment docs, verification scripts, address inventory updates.

Check: go build ./... under backend/ (pass).
Made-with: Cursor
2026-04-07 23:22:12 -07:00

74 lines
1.6 KiB
Go

package rest
import (
"context"
"errors"
"strings"
"testing"
"github.com/jackc/pgx/v5"
"github.com/stretchr/testify/require"
)
type fakeStatsRow struct {
scan func(dest ...any) error
}
func (r fakeStatsRow) Scan(dest ...any) error {
return r.scan(dest...)
}
func TestLoadExplorerStatsReturnsValues(t *testing.T) {
var call int
queryRow := func(_ context.Context, _ string, _ ...any) pgx.Row {
call++
return fakeStatsRow{
scan: func(dest ...any) error {
target, ok := dest[0].(*int64)
require.True(t, ok)
switch call {
case 1:
*target = 11
case 2:
*target = 22
case 3:
*target = 33
case 4:
*target = 44
default:
t.Fatalf("unexpected query call %d", call)
}
return nil
},
}
}
stats, err := loadExplorerStats(context.Background(), 138, queryRow)
require.NoError(t, err)
require.Equal(t, int64(11), stats.TotalBlocks)
require.Equal(t, int64(22), stats.TotalTransactions)
require.Equal(t, int64(33), stats.TotalAddresses)
require.Equal(t, int64(44), stats.LatestBlock)
}
func TestLoadExplorerStatsReturnsErrorWhenQueryFails(t *testing.T) {
queryRow := func(_ context.Context, query string, _ ...any) pgx.Row {
return fakeStatsRow{
scan: func(dest ...any) error {
if strings.Contains(query, "COUNT(*) FROM transactions") {
return errors.New("boom")
}
target, ok := dest[0].(*int64)
require.True(t, ok)
*target = 1
return nil
},
}
}
_, err := loadExplorerStats(context.Background(), 138, queryRow)
require.Error(t, err)
require.Contains(t, err.Error(), "query total transactions")
}