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") }